我有一个ExpandableListView
,其适配器包含以下数据项:
我有一个异步任务,定期验证是否有任何更改,以便我可以更新适配器。但是,我还想再扩大之前扩展的相同组(A组和B组)。我决定折叠所有扩展组,然后再打开那些之前扩展的组,因为在删除之前我可能需要折叠一些扩展组,以便它的子项不会留在列表中。这样,如果我们有下面的列表(),我希望扩展组A和B,并在使用notifyDataSetChanged()自动删除之前折叠C,因为notifityDataSetChanged不会删除来自被移除群体的儿童。这是我想从listView获得的结果: () - A(扩展) - 孩子 - B(扩展) - 孩子 - Y(折叠) - Z(折叠)
但是我得到了这个结果:
这是我使用的代码:
ArrayList<String> previousExpandedGroups = adapter.getExpandedGroups(listView);
adapter.setGroups(processJSONData(result), listView);
adapter.notifyDataSetChanged();
adapter.expandGroups(listView, expandedGroups);
我发现,如果我在expandGroups()
之后致电notifyDataSetChanged()
,就会发生这种情况。如果我等待50毫秒并再次执行expandGroups,一切正常。所以,我一直在搜索,但我无法弄清楚ExpandableListView API中是否有一个函数可以告诉我ExpandableListView是否已准备好扩展其某些组。我试图从ExpandableListView覆盖onFinishInflate()
,但这仅在第一次创建ExpandableListView时调用。那么,在适配器上执行notifyDataSetChanged之后,当ExpandableListView准备好扩展其组时,是否有来自适配器或ExpandableListView的任何函数都被激发了?
谢谢。