问题
今天用recyclerview时候发现checkbox重复使用会导致OnCheckedChangeListener 出现一个不太友好的问题,问题是这样的:
Recyclerview 会回收使用组件,回收checkbox的时候会触发OnCheckedChangeListener 事件,导致我们写的listener中的逻辑会被打乱
如我选中了一个checkbox,那么当view滚动导致这个checkbox 滑动出可视范围的时候 ,OnCheckedChangeListener事件会被触发,这样相当于自动把我选中的取消了。
解决方案
RecyclerView中使用checkbox的点击事件处理,不要利用oncheckdChangeLishener来处理了,在每次onBindViewHolder对checkbox赋值时都会去调用该方法,造成checkbox状态不对,解决办法是给checkbox添加setOnClickListener来替代处理,实践证明该方法是正确的
网友评论