我有一个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。
答案 0 :(得分:0)
您的BaseExpandableListAdapter
必须已实施getChildrenCount()
方法。你可以让它返回你的类别列表的大小(或者可能是列表的副本)。
public int getChildrenCount(int groupPosition) {
return categories.get(groupPosition).size();
}
然后只需删除子位置(如果已选中)(最好是在单击侦听器中)。当然,您还需要相应地调整数据集。如果它不是那么删除它中的相同位置,也许使它成为一个arraylist。