设置getChildView()以仅返回选定的行

时间:2012-12-06 21:36:29

标签: android

我有一个BaseExpandableListAdapter类,getChildView()必须只返回几行。但是,当然,返回null会使应用程序崩溃,并且将可见性设置为GONE将在列表中创建一个空白区域。

因此,用户在每一行中都有一个复选框,当下次打开列表时检查一个复选框,它将不会出现(如从ArrayAdapter中删除,但我不能这样做)。

有什么好的选择吗?

修改

@Override
public int getChildrenCount(int groupPosition) {
    int childrenCount = categories.get(groupPosition).size();
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);

    /** If the user wants to remove the completed items */
    if (settings.getBoolean("deleteCompletedItemsPref", false) == true) {
        for (int childPosition=0; childPosition<childrenCount; childPosition++) {
            if (categories.get(groupPosition).getItem(childPosition).isChecked()) {
                parent.removeViewAt(childPosition);
            }
        }
    }

    return childrenCount;
}

这里我运行该组的子项并尝试删除不需要的视图,虽然我无法删除这里的视图,因为它是一个AdapterView。

1 个答案:

答案 0 :(得分:0)

您的BaseExpandableListAdapter必须已实施getChildrenCount()方法。你可以让它返回你的类别列表的大小(或者可能是列表的副本)。

public int getChildrenCount(int groupPosition) {
        return categories.get(groupPosition).size();
    }

然后只需删除子位置(如果已选中)(最好是在单击侦听器中)。当然,您还需要相应地调整数据集。如果它不是那么删除它中的相同位置,也许使它成为一个arraylist。