今天碰见一个问题在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;
}
在使用RecyclerView处理大量RadioButton时,遇到状态同步错误。当滚动列表时,RadioButton的状态被错误地更新,导致显示混乱。通过在setOnCheckedChangeListener中检查RadioButton是否处于按下状态,解决了状态错乱的问题。
123

被折叠的 条评论
为什么被折叠?



