checkbox状态发送改变处理方法

来源:互联网 发布:西西软件网站 编辑:程序博客网 时间:2024/06/05 05:37

ListView自动调用 onCheckedChanged 导致CheckBox 状态发送变化的处理方法
android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化 的解决办法
今天在做一个含有CheckBox 的ListView时,发现当初始化CheckBox的状态后, 滚动ListView,其中CheckBox 的选中状态不停的发生变化。最后发现原因是 ListView滚动时自动调用 onCheckedChanged 导致的。在查看了各种博客的解决办法后 
 
在自定义Adapter的getView方法中这样写就行了。
 
//在初始化CheckBox状态和设置状态变化监听事件之前,先把状态变化监听事件设置为null
holder.checkBox.setOnCheckedChangeListener(null);
//然后设置CheckBox状态
if(itemsChecked.get(downloadId) == null){
checkBox.setChecked(false);
}else{
checkBox.setChecked(itemsChecked.get(downloadId));
}
//然后设置状态变化监听事件
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){


@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
itemsChecked.put(downloadId, true);
} else {
itemsChecked.remove(downloadId);
}
changeListener.selectedItemChange(getSelectedCount());
}

});

0 0