ListView中item包含CheckBox,但是CB选中后遇到ViewHolder复用问题。

在ListView中加了checkBox,可是发现点击改变其选中状态的时候,发现其位置错乱。状态改变的并不是你选中的,百思不得其解。后面通过上网查资料,可是个说纷纭,但是我还是找到了解决办法。

在自定义的适配器中,对checkBox的设置如下(最简单的方法哦):

在getView发方法中添加以下代码:

holder.cb_selected.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (holder.cb_selected.isChecked()) {
msgBean.setSelected(true);
} else {
msgBean.setSelected(false);
}
notifyDataSetChanged();
}
});
if (msgBean.isSelected()) {
holder.cb_selected.setChecked(true);
} else {
holder.cb_selected.setChecked(false);
}

注意:点击监听一定要写在设置数据的前面,否则无法解决问题。

 

posted @ 2017-06-20 15:04  浪浪暖男  阅读(663)  评论(1编辑  收藏  举报