📜  如何在可扩展列表视图中删除子项行 (1)

📅  最后修改于: 2023-12-03 15:09:01.541000             🧑  作者: Mango

如何在可扩展列表视图中删除子项行

在 Android 的可扩展列表视图中,用户可以通过展开父项行来查看子项行。有时候,我们需要在用户操作后删除特定的子项行。以下是如何在可扩展列表视图中删除子项行的步骤:

  1. 首先,通过 getChildCount() 方法获取子项行的数量。
int childCount = expandableListView.getChildCount();
  1. 然后,通过 getChildAt(index) 方法获取特定的子项行 View
View childView = expandableListView.getChildAt(index);
  1. 接下来,使用 getTag() 方法获取子项行对应的数据对象,例如一个 HashMap
HashMap<String, String> childData = (HashMap<String, String>) childView.getTag();
  1. 假设我们要删除这个子项行,我们需要从其父项行的数据对象中删除相应的数据。例如,如果我们通过 SimpleExpandableListAdapter 来创建可扩展列表视图:
SimpleExpandableListAdapter adapter = (SimpleExpandableListAdapter) expandableListView.getExpandableListAdapter();
HashMap<String, String> parentData = (HashMap<String, String>) adapter.getGroup(groupPosition);
parentData.remove(childData.get("key"));
  1. 最后,使用 notifyDataSetChanged() 方法更新列表视图,使得删除操作生效。
adapter.notifyDataSetChanged();

现在,我们已经成功在可扩展列表视图中删除了子项行。完整的示例代码如下所示:

int childCount = expandableListView.getChildCount();
for (int i = 0; i < childCount; i++) {
    View childView = expandableListView.getChildAt(i);
    HashMap<String, String> childData = (HashMap<String, String>) childView.getTag();
    if (childData.get("key").equals("value")) {
        SimpleExpandableListAdapter adapter = (SimpleExpandableListAdapter) expandableListView.getExpandableListAdapter();
        HashMap<String, String> parentData = (HashMap<String, String>) adapter.getGroup(groupPosition);
        parentData.remove(childData.get("key"));
        adapter.notifyDataSetChanged();
        break;
    }
}

以上就是如何在可扩展列表视图中删除子项行的全部步骤。注意,这只是一种示例方法,具体实现可能因应用程序而异。