У кого-нибудь еще была проблема с CheckedTextView, показывающим несколько отмеченных элементов, когда отмечен только 1? При щелчке элемента CheckedTexView ответ от OnClickListener заключается в проверке записей до и после выбранного элемента.
Вот код:
mFriendDoneButton = (Button) findViewById(R.id.doneAddAFriendButton);
mListView = (ListView)findViewById(R.id.contactList);
populateContactList();
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mListView.setItemsCanFocus(false);
mListView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int arg2, long arg3) {
int selectedPosition = arg2;
CheckedTextView textView = (CheckedTextView)view.findViewById(R.id.friendEntryText);
String mtext = textView.getText().toString();
Log.i("AddAFriendActivity", "Click on position "+selectedPosition);
Toast t = new Toast(AddAFriendActivity.this);
t = Toast.makeText(AddAFriendActivity.this, "Clicked on " + arg2+mtext+arg3, Toast.LENGTH_LONG);
t.show();
}
});
private void populateContactList () {
// Сборка адаптера с контактами
Курсорный курсор = getContacts ();
String [] fields = new String [] {
ContactsContract.Data.DISPLAY_NAME
};
SimpleCursorAdapter адаптер = новый SimpleCursorAdapter (это, R.layout.friend_entry, курсор, поля, новый int [] {R.id.friendEntryText});
mListView.setAdapter (адаптер);
}
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection = null;
String[] selectionArgs = null;
String sortOrder = null;
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
XML выглядит следующим образом: