更新适配器后,在ExpandableListView中扩展组

时间:2015-01-28 16:28:50

标签: android android-listview expandablelistview

我有一个ExpandableListView,其适配器包含以下数据项:

  • A(扩展)
  • B(扩展)
  • C(扩展)
  • D(折叠)

我有一个异步任务,定期验证是否有任何更改,以便我可以更新适配器。但是,我还想再扩大之前扩展的相同组(A组和B组)。我决定折叠所有扩展组,然后再打开那些之前扩展的组,因为在删除之前我可能需要折叠一些扩展组,以便它的子项不会留在列表中。这样,如果我们有下面的列表(),我希望扩展组A和B,并在使用notifyDataSetChanged()自动删除之前折叠C,因为notifityDataSetChanged不会删除来自被移除群体的儿童。这是我想从listView获得的结果: ()    - A(扩展)       - 孩子    - B(扩展)       - 孩子    - Y(折叠)    - Z(折叠)

但是我得到了这个结果:

  • 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的任何函数都被激发了?

谢谢。

0 个答案:

没有答案