Я работаю там, где у меня есть флажок внутри RecyclerView
элементов. Я знаю некоторые из его проблем. Но, только с 10 элементами и без прокрутки неправильного прослушивателя.Strange RecyclerView Checkbox onCheckChanged Behavior
У меня есть что-то вроде этого:
private class MyAdapter extends RecyclerView.Adapter<MyViewHodler> {
ArrayList<String> items;
ArrayList<String> checkedList = new ArrayList<>();
...
public void onBindViewHolder(final MyViewHolder holder, int position) {
String item = items.get(position);
String check = checkedList.get(item);
if(check != null)
holder.vChecked.setChecked(true);
else
holder.vChecked.setChecked(false);
....
holder.vChecked.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
checkedList.add(item);
} else {
checkedList.remove(item);
}
}
}
}
Теперь, как ни странно это checkedChange звонки сделаны на различных видах. У меня есть список из 10 предметов и подходит для recyclerview, без прокрутки. Я внешне изменяю данные (элементы и проверенный список), устанавливаю новые данные и звоня по телефону myAdapter.notifyDatasetChanged()
Этот звонок удаляет еще один элемент из состояния, в котором было проверено.
Например, у меня есть 10 предметов. Я снимите отметку с 1 пункта и сделаю некоторые другие вычисления, основанные на этом, и позвонив по номеру myAdapter.notifyDatasetChanged()
. Он также отключает еще один элемент из других 9 элементов.
Итак, даже без прокрутки, почему прослушиватель onCheckedChange вызывается для неправильного представления?
Ahhh .. Извините .. Это была опечатка .. Отредактированный вопрос .. – kirtan403
Понял. Проверьте мое редактирование. –
Основываясь на одном элементе, я меняю некоторые вычисления, которые отражаются во всех других элементах. Так что мне нужно позвонить notifyDatasetChanged – kirtan403