Jak połączyć pole wyboru dla każdego kontaktu w wypełnionym widoku listy?
Miałem wiele problemów z tym problemem. Mam widok listy zawierający:
ImageView / contactName / TextView / CheckBox
TheNazwa Kontaktu w widoku listy jest wypełniany przez czytanie kontaktów w telefonie z aSimpleCursorAdapter. Wszystko dla elementów jest wyświetlane, gdy aplikacja działa, ale problem, który mam, łączy pola wyboru z odpowiadającym im elementem na liście.
Dzięki pewnym badaniom odkryłem, że muszę użyćgetView () aby połączyć pola wyboru z elementami na liście, ale przez praktykę nie wydaje mi się, aby działało poprawnie. Ponadto żaden z przykładów, których próbowałem, nie wyjaśnił, jak zastosować getView (). Najbardziej pełny przykład, z którego pracowałem, pochodzi stąd:
http://androidcocktail.blogspot.com/2012/04/adding-checkboxes-to-custom-listview-in.html
Skręt jest taki, że odczytuje i wypełnia mój widok listy moimi kontaktami:
private void populateContactList() {
// Build adapter with contact entries
Cursor cursor = getContacts();
String[] fields = new String[] {
ContactsContract.Data.DISPLAY_NAME
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor,
fields, new int[] {R.id.contactEntryText});
lv.setAdapter(adapter);
} // END POPULATECONTACTLIST
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" +
(chkboxAllVisible ? "0" : "1") + "'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
} // END GETCONTACTS
Jak połączyć każde pole wyboru z odpowiednim elementem kontaktowym w moim widoku listy?