1. 程式人生 > >listview中的checkbox狀態儲存與恢復的完美方法

listview中的checkbox狀態儲存與恢復的完美方法

由於listview的特性機制導致item中的checkbox的狀態無法儲存,在這裡提供一種很好的解決方法;

首先我們知道listview的資料來源於Adapter中傳入的list集合或者陣列中的元素;因此我們可以為此元素建立一個包裝類,在包裝類中新增一個用來儲存CheckBox狀態的成員變數,可以同時建立setter和getter確保資料可以修改;然後在Adapter的getView()方法中的為CheckBox繫結check改變監聽器即

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    fileList.get(position).setCheckState(true);
                }else{
                    fileList.get(position).setCheckState(false);
                }
            }
        });
        checkBox.setChecked(fileList.get(position).getCheckState());
然後就可以完成對CheckBox狀態的儲存和恢復;

注意上面的filelist 就是 File類 的包裝類 的集合;checkState就是CheckBox的狀態儲存成員變數;