Итак, я искал это решение повсюду, получил некоторые предложения, но так и не смог его решить. Я читал, что это как-то связано с перерабатываемым видом, но не могу понять, как это остановить. По сути, у меня есть список и адаптер массива, в списке есть флажки, и когда я проверяю элемент и прокручиваю вниз, снова выбирается случайный элемент. Текст другой, но кажется, что элементы проверены по какому-то шаблону.
Оцените помощь!
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();
}