@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Item item = itemList.get(position);
holder.name.setText(item.getName());
holder.value.setChecked(item.isValueChecked());
holder.value.setOnCheckedChangeListener(new OnCheckedChangeListener(
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
for(Item i: itemList){
i.setValueChecked(false);
}
if(buttonView.isChecked()){
itemList.get(position).setValueChecked(true);
holder.value.setChecked(true);
}
notifyDataSetChanged();
}
});
}
Попробуйте это решение, это должно работать ...
Checked Change Listener установлен на коммутаторе, если какой-либо переключатель включен, то все значения из itemList установлены в ложное значение, а текущее значение установлено в значение True, а переключатель установлен в положение ON, наконец, notifyDataSetChanged () имеет значениевызывают.
Если какой-либо переключатель выключен, то все значения в itemList становятся ложными, а notifyDataSetChanged () вызывается так, чтобысостояние переключателя обновляется.
holder.value.setChecked(item.isValueChecked());
Обновляет состояние переключателя на основе значений, хранящихся в itemList .