1. 程式人生 > >ListView可回收引起CheckBox選中狀態混亂的解決方案

ListView可回收引起CheckBox選中狀態混亂的解決方案

在用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
); }