开发者

CheckedTextView Behaving Erratically

开发者 https://www.devze.com 2022-12-31 11:15 出处:网络
Has anyone else had a problem with CheckedTextView showing multiple checked items when only 1 is checked? When a CheckedTexView item is clicked, the response from the OnClickListener is to check the e

Has anyone else had a problem with CheckedTextView showing multiple checked items when only 1 is checked? When a CheckedTexView item is clicked, the response from the OnClickListener is to check the entries before and after the clicked item.

Here's the code:

    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() { // Build adapter with contact entries Cursor cursor = getContacts(); String[] fields = new String[] { ContactsContract.Data.DISPLAY_NAME }; SimpleCursorAdapter adapter = new SimpleCursorAdapter(thi开发者_开发问答s, R.layout.friend_entry, cursor, fields, new int[] {R.id.friendEntryText}); mListView.setAdapter(adapter); }

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);
}

The XML is as follows:


Found the problem... textView needs to be declared as a field, otherwise the managedQuery results cycle through the onClickListener.

0

精彩评论

暂无评论...
验证码 换一张
取 消