0

So I have been searching all over for this solution, got some leads but never able to solve it. I read that it has something to do with the view being recycled but can't figure out how to stop that. Basically I have a listview and array adapter , in the listview there are check boxes and when I check an item and scroll down there is a random item selected again. The text is different but it seems that the items are checked in some sort of pattern.

Appreciate the help!

package com.example.myapplication;

private static final String TAG = viewContacts.class.getSimpleName();
ListView listView_Android_Contacts;
ListView viewContacts;
Cursor c;
CheckBox cb;
ArrayList<String> contacts;
ArrayList<String> listMessages;
LinearLayout linearMain;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_contacts);
    final ListView viewContacts = findViewById(R.id.contactsView);
    Dexter.withActivity(this)
            .withPermission(Manifest.permission.READ_CONTACTS)
            .withListener(new PermissionListener() {
                @Override
                public void onPermissionGranted(PermissionGrantedResponse response) {
                    get();
                }

                @Override
                public void onPermissionDenied(PermissionDeniedResponse response) {
                    // check for permanent denial of permission
                    if (response.isPermanentlyDenied()) {
                        // navigate user to app settings
                    }
                }

                @Override
                public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
                    token.continuePermissionRequest();
                }
            }).check();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_multiple_choice, contacts
    );
    viewContacts.setAdapter(adapter);
    viewContacts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            CheckedTextView checkedTextView = ((CheckedTextView)view);
            checkedTextView.setChecked(!checkedTextView.isChecked());
        }
    });
}

public void get(){

    c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME );
    contacts = new ArrayList<>();
    while(c.moveToNext()){
        String contactName = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        String phoneNumber = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        contacts.add( contactName + "\n" + phoneNumber);

        Log.d(TAG, "show contacts:");
    }
    c.close();
}

0 Answers0