recycleview复用导致的Edittext,checkbox,ratingbar等数据错乱
记录一个问题
由于recycleview复用机制,会导致在刷新adapter的时候,数据发生错乱,也就是下一个item用了上一个item的数据
解决:
通过debug调试,发现问题出在监听器的方法又调用了一次,而且position错误,得出是由监听器导致,
因此在设置数据前移除监听即可,例如:
if(et.getTag() instanceof TextWatcher){
et.removeTextChangedListener((TextWatcher)et.getTag());
}
et.setText(list.getContent());
et.setTag(watcher);
//或
ratingBar.setOnRatingChangeListener(null);
ratingBar.setRating(data.getNum()));
//或
cb.setOnCheckedChangeListener(null);
cb.setChecked(data.getIsChecked());