У меня есть флажок для выбора элементов и следующих строковых массивов
данные: содержит все мои вещи
checkData: содержит все отмеченные элементы
Чтобы решить эту проблему, попробуйте отредактировать onBindViewHolder (держатель, позиция)
@Override
public void onBindViewHolder(@NonNull ProgrammminViewHolder holder, int position)
{
String title =data[position];
holder.textTitle.setText(title);
//logic to solve first and last (multiple) selection issue
CheckBox chk = holder.chk;
String current = data[position];
chk.setChecked(false);
for(String st : checkedData){
if(st.equals(current)){
chk.setChecked(true);
}
}
holder.setItemClickListener(new ItemClickListener()
{
@Override
public void onItemClick(View v, int pos)
{
//here analomay occured 19:36 Custom Reycler view CheckBoxes | anomaly is now cleared.
CheckBox chk = (CheckBox) v;//.findViewById(R.id.chk);
if(chk.isChecked())
{
checkedData.add(data[pos]);
}else if(!chk.isChecked())
{
checkedData.remove(data[pos]);
}
}
});
}
Объяснение
То, что он будет делать, это каждый раз, когда данные связываются с держателем в onBindViewHolder, вы предварительно снимаете флажок и затем проверяете, присутствует ли соответствующая строка этого держателя в массиве checkedData, если да, установите для checkBox значение true.