ListView可回收引起CheckBox選中狀態混亂的解決方案
阿新 • • 發佈:2019-01-29
在用ListView展示資料的時候,我們通常都會用到convertView和ViewHolder來優化列表項佈局。但是,在ListView列表項佈局和CheckBox搭配在一起使用時,如果不做一些必要的處理,會導致在上下滑動ListView的時候,出現checkbox選中狀態混亂的情況。這是由ListView回收引起的,現提供一個解決方案:
1.列表項在展示資料的時候,資料基本上都是從一個javebean中獲取來的,所以我們可以在javebean 中再新增一個屬性:
private boolean isChecked;
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
}
2.找到CheckBox,對其實行監聽:
if(mCheckbox.isChecked()){
mCheckbox.setChecked(false);
bean.setChecked(false);
}else{
mCheckbox.setChecked(true );
bean.setChecked(true);
}
adapter.notifyDataSetChanged();
3.返回到ListView介面卡中的getView方法中,增加以下程式碼:
//如果bean中某個物件已經checked,則在互動介面上展示:
if(bean.isChecked()){
mCheckBox.setChecked(true);
}else{
mCheckBox.setChecked(false );
}