listview中的checkbox狀態儲存與恢復的完美方法
阿新 • • 發佈:2019-02-07
由於listview的特性機制導致item中的checkbox的狀態無法儲存,在這裡提供一種很好的解決方法;
首先我們知道listview的資料來源於Adapter中傳入的list集合或者陣列中的元素;因此我們可以為此元素建立一個包裝類,在包裝類中新增一個用來儲存CheckBox狀態的成員變數,可以同時建立setter和getter確保資料可以修改;然後在Adapter的getView()方法中的為CheckBox繫結check改變監聽器即
然後就可以完成對CheckBox狀態的儲存和恢復;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());
注意上面的filelist 就是 File類 的包裝類 的集合;checkState就是CheckBox的狀態儲存成員變數;