如何在可扩展列表视图中保存复选框的状态-Android



我在Expandable ListView中显示来自SQLite数据库的条目,一切正常,但我想在所有子项旁边添加一个复选框。每次我选中一个复选框,然后向下滚动或收缩我选中的复选框,都不会保存复选框的状态。我知道每当我向下滚动并展开组等等时,列表都会被回收。如何保存每个复选框的状态(每个子项)?我有一个扩展CursorTreeAdapter的类,并且在方法中没有"childPosition"。为了拯救国家,我需要做什么?

您可以拥有一个与列表元素之和大小相同的布尔标志数组,并从该数组中为任何组件设置和获取检查值。

还有一个解决方案是,您可以为列表视图中的每个元素保留一个计数器。例如,如果您有Person列表,您可以在Person类中添加一个计数器变量。

在getChildView方法中,将所有代码放在一个if块中,如下所示;

    public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) {
    //FOR SAVE THE STATES!!
    if(parents.get(groupPosition).getCounter()==0) {
        DatePicker datePicker = null;
        Button ok = null;
        Spinner installment = null;
        CheckBox creditCard;
        ......//BLA BLA BLA

        //After finish your codes, increment the counter
        parents.get(groupPosition).setCounter((parents.get(groupPosition).getCounter()+1));
    }
    return convertView;
}

因为对于每个调用的expandGroup方法,所有的初始化(目前在if块中)都会重复。正因为如此,你放松了你对物体的状态。

希望得到帮助。

最新更新