设置checkbox改变的监听器方法要添加在初始化Checkbox状态的代码之前,原因是滑动的时侯会重新给已经选中的checkbox赋值造成isChecked状态改变。
一、错乱问题分析:
我先选中两个item1和item2,打印日志:如下
这时候我向上滑动屏幕让item1和item2移去屏幕,OnCheckedChangeListener方法被调用,打印日志:如下,item1和item2的状态改变啦
解决此问题:把setOnCheckedChangeListener写在setChecked方法之前,就OK!
二、错乱问题分析:我在选择时第一页的item时总会出现,如我选position=2的checkbox,另外一个position=6的会同时选中;或者选position=3的checkbox,position=6的也会选中。
原因是我设置点击事件时的position,用错了。
三、选不上checkbox分析:
点击选择checkbox时,它快速由选中变为不选中。
原因是由于给checkbox控件设置了点击事件,而checkbox的SetOnCheckedChangeListener()要比OnClickListener()执行的快。所以就先执行了SetOnCheckedChangeListener()先选中了,然后执行OnClickListener()根据判断,让checkbox又取消了选中状态。
解决方法是:不要给checkbox添加点击事件,而是给它的父类的View,也就是给这个item的itemView添加点击事件。通过点击itemView来设置checkbox的选择状态。
源码下载地址:http://download.csdn.net/detail/jason_996/9702101