今天遇到了这个坑爹的问题,一开始以为是因为ListView的缓存造成的,结果debug的时候发现在调用clearCheck();和check(id);方法时都会触发RadioGroup的点击事件,从而导致了显示错乱,最后想了一个解决办法,取消监听然后在设置监听:
viewHolder.answerRg.setOnCheckedChangeListener(null); // 取消监听
...
viewHolder.answerRg.clearCheck();
...
viewHolder.answerRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
...
}
});
一个很笨的方法,如果大家有什么更好的方法,欢迎大家给我留言,我在这里万分感谢。