删除元素后,在可扩展列表视图中未获得正确的组状态

时间:2014-10-06 15:48:34

标签: android expandablelistview viewstate expandablelistadapter notifydatasetchanged

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

对于Ex:

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

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

3 - 我正在扩大第一组。 [grp 1 - 扩展,grp 2 - 崩溃,grp 3 - 崩溃,grp 4 - 崩溃,grp 5 - 崩溃]。

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

5 - 删除后, 正确的grp状态是[grp 1 - 倒塌,grp 2 - 倒塌,grp 3 - 倒塌,grp 4 - 倒塌],但不是我得到的, grp的状态是[grp 1 - 展开,grp 2 - 折叠,grp 3 - 折叠,grp 4 - 崩溃]。

为什么地狱grp 1(上一次是grp 2)扩大了???它应处于崩溃状态。

我认为这是一个非常小的问题,但我无法找到解决方案。请提出解决方案。任何人的早期回复都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

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

解决方案是手动控制扩展哪些组,请参阅此处(查看恢复状态): https://stackoverflow.com/a/10905158/2197087