用CheckBox在ListView滚动过程中自动调用setOnCheckedChangeListener的坑

本企业级移动App的Android开发工程师一枚,新开博客来记录下自己编码过程的辛酸史,给自己看也给看到的童鞋们提供一些文字上的帮助。 自己也有在看一些大神的技术博客,写得不好欢迎指正!!!以下是分割线~~~


今天的坑~~ 最近在做列表带可选框的需求时碰到一些问题,以为设了初始checked状态和onCheckedChangeListener事件监听改变一下checkbox的状态就可以了,实际并不能正常 工作。。。

当选中的checkbox在listview滑动时会自动调用setOnCheckedChangeListener将状态反选,导致滑动后选中的状态被反选。 查了一下资料,可通过一下方法规避:


viewHolder.mCheckBoxCheck.setOnCheckedChangeListener(null);

viewHolder.mCheckBoxCheck.setChecked(item.isLookable);

viewHolder.mCheckBoxCheck.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {

@Override

public voidonCheckedChanged(CompoundButton buttonView, booleanisChecked) {

item.isLookable= isChecked;

}

});



希望看到的童鞋们不再踩坑~~ 有更好的方法的欢迎留言交流~~   ^_^


更新于12月13号

参考了一些朋友以及评论大神的做法,可以通过不设置onCheckedChangeListener改用setOnClickListener再手动改变CheckBox的状态实现效果。具体用哪种根据实际情况决定。(原谅我写这篇文章时并不会MarkDown语法╮(╯╰)╭

你可能感兴趣的:(用CheckBox在ListView滚动过程中自动调用setOnCheckedChangeListener的坑)