【问题标题】:Not getting correct state of groups in expandable list view after deleting an element删除元素后未在可展开列表视图中获得正确的组状态
【发布时间】:2014-10-06 15:48:33
【问题描述】:

我将 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个元素,grp 2变为grp1,grp 3变为grp 2,依此类推。

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

为什么 grp 1(之前是 grp 2)被扩展了???它应该处于折叠状态。

我认为这是一个非常小的问题,但我无法找到解决方案。请提出解决方案。任何人的早期回复将不胜感激。

【问题讨论】:

    标签: android expandablelistview viewstate expandablelistadapter notifydatasetchanged


    【解决方案1】:

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

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

    【讨论】:

    • 我按照你说的做了,但是遇到了同样的问题。即使在为所有组调用 Oncollapsegroup 方法后,适配器仍在为一组调用 getchildview 方法,并且正在扩展。
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多