Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 删除元素后无法在可展开列表视图中获取组的正确状态_Android_Expandablelistview_Viewstate_Expandablelistadapter_Notifydatasetchanged - Fatal编程技术网

Android 删除元素后无法在可展开列表视图中获取组的正确状态

Android 删除元素后无法在可展开列表视图中获取组的正确状态,android,expandablelistview,viewstate,expandablelistadapter,notifydatasetchanged,Android,Expandablelistview,Viewstate,Expandablelistadapter,Notifydatasetchanged,我正在将arraylist传递给我的可扩展列表适配器。当我从arraylist中的特定位置删除一个元素,然后用notifyDataSetChanged通知适配器时,我在可扩展列表视图中没有获得grp的正确状态 例如: 1-我的arraylist有5个元素,adaper在显示屏上显示5个视图 2-最初,所有组都将处于折叠状态 3-我正在扩展第一组。[grp 1-膨胀,grp 2-折叠,grp 3-折叠,grp 4-折叠,grp 5-折叠] 4-现在我删除第一个grp。删除后,我的arraylist

我正在将arraylist传递给我的可扩展列表适配器。当我从arraylist中的特定位置删除一个元素,然后用notifyDataSetChanged通知适配器时,我在可扩展列表视图中没有获得grp的正确状态

例如:

1-我的arraylist有5个元素,adaper在显示屏上显示5个视图

2-最初,所有组都将处于折叠状态

3-我正在扩展第一组。[grp 1-膨胀,grp 2-折叠,grp 3-折叠,grp 4-折叠,grp 5-折叠]

4-现在我删除第一个grp。删除后,我的arraylist将有4个元素,GRP2变为grp1,GRP3变为GRP2,依此类推

5-删除后, grp shd的正确状态是[grp 1-折叠,grp 2-折叠,grp 3-折叠,grp 4-折叠],但我得到的不是这个, grp的状态为[grp 1-展开,grp 2-折叠,grp 3-折叠,grp 4-折叠]

为什么grp 1上个版本是grp 2被扩展了???它应该处于崩溃状态

我认为这是一个很小的问题,但我无法找到解决办法。请提出解决方案。如果您能尽早回复,我们将不胜感激。

当您调用notifyDataSetChanged时,您会让适配器知道数据已更改,但它不会告诉任何有关视图的信息。因此,适配器记住第一个组已展开,当您通知适配器更改时,它将获取新数据并用它填充ExpandableListView,从而保持第一个组已展开

解决方案是手动控制扩展哪些组,请参见此处的恢复状态:

我已经照你说的做了,但仍然面临同样的问题。即使在为所有组调用Oncollapsegroup方法之后,适配器仍然为一个组调用getchildview方法,该方法正在扩展。