0

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

对于防爆:

1 - 我的数组列表由具有5种元素和adaper正在显示在显示器5上视图。

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

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

4 - 现在我正在删除第一个grp。删除后,我的数组列表将有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(prev它是grp 2)得到了扩大?它应该处于折叠状态。

我认为这是非常小的问题,但我无法找到解决方案。请建议解决方案。任何人的早期答复将受到高度赞赏。

回答

0

当您拨打notifyDataSetChanged()时,您让适配器知道数据已更改,但它没有说明有关视图的任何信息。因此,适配器会记住第一个组已扩展,并且当您通知适配器所做的更改时,它将接收新数据并将其填充到ExpandableListView中,从而保持第一个组的扩展。

一个解决办法是将手动控制哪些群体扩大,在这里看到的(看恢复状态): https://stackoverflow.com/a/10905158/2197087

+0

我已经做了如你所说,但仍面临着同样的问题。即使在为所有组调用Oncollapsegroup方法之后,适配器仍然为一个组调用getchildview方法,并且正在扩展。 – 2014-10-07 06:46:13