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