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:
<code>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 </code>
Jak połączyć każde pole wyboru z odpowiednim elementem kontaktowym w moim widoku listy?