5

在 myActivity中,我更改了HashMapmy的基础数据ExpandableListView,然后调用

((BaseAdapter) myExpandableListView.getAdapter()).notifyDataSetChanged();

但是,应用程序在调用它后崩溃,引发IndexOutOfBoundsException.

我仔细检查了我在适配器中的任何地方都访问了相同且正确的数据,但找不到任何错误。

4

2 回答 2

6

经过一番调试,我终于发现,奇怪的getChildrenCount是,在我调用notifyDataSetChanged. 因此,适配器仍期望获得与更新前相同数量的子代。当我移除一些孩子时,这是一个错误的假设,并导致IndexOutOfBoundsException.

玩了一会儿,我发现对于ExpandableListViews,适配器必须通过 访问getExpandableListAdapter(),而不是通过 getAdapter()。将我的代码更改为

((BaseExpandableListAdapter) myExpandableListView.getExpandableListAdapter()).notifyDataSetChanged();

现在一切正常。

我希望这可以帮助任何开发人员。我花了几个小时来查找和修复这个问题,但在网络和 StackOverflow 上几乎找不到任何关于它的信息。

于 2013-06-24T10:45:55.113 回答
0
listAdapter.notifyDataSetChanged()
               
val groupPosition = 0
expandableListView.expandGroup(groupPosition, true)

expandableListView.expandGroup()我通过在调用后添加方法解决了我的问题notifyDataSetChanged()

于 2021-07-29T03:33:59.470 回答