4

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

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

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

 mExpandableList.getAdapter();

我得到一个 ExpandableListConnector,而不是我的自定义适配器,所以我不能使用我的函数。如何刷新列表并保持其状态?

4

2 回答 2

1

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

private StopsExpandableAdapter adapter;

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

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

private ArrayList<Boolean> expandGroups;
于 2013-09-12T08:22:37.097 回答
0

使用以下命令。

StopsExpandableAdapter.notify();

或者

StopsExpandableAdapter.notifydatasetchanged();

于 2013-03-20T05:30:49.227 回答