Android的ExpandableListView:删除项目时保持组展开/未展开

时间:2013-02-11 11:18:04

标签: android refresh expandablelistview

我有一个使用ExpandableListView的活动。我使用扩展BaseExpandableListAdapter的自定义适配器填充列表(我的适配器称为StopsExpandableAdapter)。我实施了所有必要的方法。

在我的活动中,我可以使用上下文菜单从该列表中删除条目。当用户这样做时,我想刷新列表,以便删除该项目。如果我创建一个新适配器,列表视图将重置为默认值,并且所有组都将折叠。我想保留listview的状态,因此刷新列表后仍然会扩展扩展组。

我以为我可以在自定义适配器(StopsExpandableAdapter)中添加removeGroup方法,并在删除组后在我的活动中使用它,但如果我使用:

 mExpandableList.getAdapter();

我得到一个ExpandableListConnector,而不是我的自定义适配器,因此我无法使用我的功能。如何刷新列表并保持其状态?

2 个答案:

答案 0 :(得分:1)

为了能够访问我的适配器,我将其保存为全局变量:

private StopsExpandableAdapter adapter;

通过这种方式,我可以访问我的函数,从我的数据列表中删除子项(在适配器内),并通知数据已更改。

能够保持我正在使用布尔人的状态,以了解一个群体是否已经扩大。每次添加或删除项目时,我都会检查哪些组已展开,以便在完成添加/删除后再次展开它们。

private ArrayList<Boolean> expandGroups;

答案 1 :(得分:0)

使用以下命令。

  

StopsExpandableAdapter.notify();

  

StopsExpandableAdapter.notifydatasetchanged();