/ / Android: Jak uzyskać zdarzenie po kliknięciu pola wyboru w ListView? - Android, lista-androidów

Android: jak uzyskać zdarzenie po kliknięciu pola wyboru w ListView? - Android, lista-androidów

Jestem nowy na Androida, staram się zrobić prostąAplikacja gdzie mam wyświetlić listę kontaktów dostępnych w książce telefonicznej w ListView w aplikacji, staram się dodać pole wyboru t każdego elementu. Kiedy użytkownik zaznaczy pole wyboru, chcę zwrócić przedmiot. Do tej pory mogę wyświetlić listę, ale niejasne, jak sprawdzić, czy zdarzenie checkbox check.

Mój kod jest następujący:

Pliki XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<ListView
android:id="@android:id/android:list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight = "1"
android:choiceMode="multipleChoice" android:clickable="true"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id ="@+id/savebutton"
android:text = "save"
/>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<ListView
android:id="@android:id/android:list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight = "1"
android:choiceMode="multipleChoice" android:clickable="true"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id ="@+id/savebutton"
android:text = "save"
/>

</LinearLayout>

Kod źródłowy:

public class testcontacts extends ListActivity
{
private ListAdapter adapter = null;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//CheckBox box = (CheckBox)findViewById(R.id.checkbox);
//box.setFocusable(false);

ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);

adapter = new SimpleCursorAdapter
(this, R.layout.contact_entry, cur,new String[] {ContactsContract.Contacts.DISPLAY_NAME}, new int[] {R.id.contactEntryText});
setListAdapter(adapter);

ListView list = getListView();
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

}
}

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz użyć metody getCheckedItemPosition douzyskać pozycję przedmiotu, który jest zaznaczony. Gdy masz pozycję, możesz użyć findViewById, aby pobrać przedmiot i metodę isChecked do sprawdzenia. Oto przykład:

     int pos = list.getCheckItemPosition(); //list being a ListView previously defined
//Look for the checked CheckBox in the particular position
CheckBox checkBox = (CheckBox)findViewById(pos);
if (checkBox.isChecked()) {
//Do something here
}

Mam nadzieję, że pomogło.


0 dla odpowiedzi nr 2

To sprawi, że pozycja przedmiotu będzie zaznaczona

.getCheckedItemPositions()

0 dla odpowiedzi № 3

W pozycji listView onclick. Zrób to tak ...

 CheckBox chkBox = (CheckBox) viewRow.findViewById(R.id.checkBoxXML);

to pole wyboru będzie miało ten sam stan, co kliknięte pole wyboru listitem.


0 dla odpowiedzi nr 4

Aby utworzyć wydarzenie, które nasłuchuje zdarzeń kliknięcia na elementach listview, możesz spróbować:

list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView textView = (CheckedTextView)view;
textView.setChecked(!textView.isChecked());
switchAlarm(textView.isChecked(),position);
}
});

Ten kod zmieni stan chapsed elementu.

Mam nadzieję, że to pomoże.