在我的Activity
中,我更改了HashMap
的基础数据ExpandableListView
,然后调用
((BaseAdapter) myExpandableListView.getAdapter()).notifyDataSetChanged();
但是,在调用此应用程序后,应用程序崩溃,引发IndexOutOfBoundsException
。
我仔细检查了我在适配器的每个地方访问相同和正确的数据,但找不到任何错误。
答案 0 :(得分:6)
经过一些调试后,我终于发现,奇怪的是,在我调用getChildrenCount
后,notifyDataSetChanged
从未被调用过。因此,适配器仍然期望获得与更新之前相同数量的子节点。
当我删除一些孩子时,这是一个错误的假设,并导致IndexOutOfBoundsException
。
经过一段时间的游戏,我发现对于ExpandableListViews
,必须通过getExpandableListAdapter()
访问适配器,而不是通过getAdapter()。
将我的代码更改为
((BaseExpandableListAdapter) myExpandableListView.getExpandableListAdapter()).notifyDataSetChanged();
现在一切正常。
我希望这可以帮助任何开发人员。我花了几个小时找到并解决了这个问题,很难在网络和StackOverflow上找到任何关于它的信息。
答案 1 :(得分:0)
listAdapter.notifyDataSetChanged()
val groupPosition = 0
expandableListView.expandGroup(groupPosition, true)
我通过在调用 expandableListView.expandGroup()
后添加方法 notifyDataSetChanged()
解决了我的问题。