今天碰见一个问题在RecyclerView中,用状态去记录RadioButton是否被选中,结果状态被修改,导致状态错乱。 程序效果图如下:
错误代码如下:
holder.rbn_pill.setOnCheckedChangeListener(((buttonView, isChecked) -> {
//用于装填数据的Bean类
ReminderBean reminderBean = mData.get(position);
reminderBean.setRbnPill(isChecked);//存储左侧RadioButton状态
reminderBean.setRbnMl(!isChecked);//存储右侧RadioButton状态
}));
holder.rbn_ml.setOnCheckedChangeListener(((buttonView, isChecked) -> {
ReminderBean reminderBean = mData.get(position);
reminderBean.setRbnPill(!isChecked);//存储左侧RadioButton状态
reminderBean.setRbnMl(isChecked);//存储右侧RadioButton状态
}));
当出现条目过多时,进行上下滑动,会导致setOnCheckedChangeListener被触发。导致状态被修改。从而出现位置记录错乱。
最后在setOnCheckedChangeListener中方法添加下列代码即可。
//判断该RadioButton当前是否处于按下状态
if (!holder.rbn_ml.isPressed()) {
return;
}