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 № 1Moż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.