我正在将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)扩大了???它应处于崩溃状态。
我认为这是一个非常小的问题,但我无法找到解决方案。请提出解决方案。任何人的早期回复都将受到高度赞赏。
答案 0 :(得分:0)
当你致电notifyDataSetChanged()
时,你让适配器知道数据已经改变,但它没有告诉任何有关视图的信息。因此,适配器会记住第一个组已展开,当您通知适配器更改时,它会获取新数据并使用它填充ExpandableListView
,从而保持第一个组的扩展。
解决方案是手动控制扩展哪些组,请参阅此处(查看恢复状态): https://stackoverflow.com/a/10905158/2197087