Checbox会自动显示为ExpandableListView中的选定内容

时间:2018-11-21 12:11:05

标签: android listener expandablelistview

我有一个ExpandableListView,它只有一个孩子,最多2个组 这个孩子的群组视图带有4-5个复选框-所有群组视图都使用相同的子视图

当我检查第一个孩子中的元素并向下滚动时,我看到与第二个组中所选元素相同的元素 我重复一遍显示为选中状态,它没有调用侦听器,而是显示为选中状态

我了解到这是列表视图中的滚动错误,但是我看到所有人都有一个问题,即它为我调用了监听器,而不是在滚动时仅显示为选定状态。

The yellow its the other group

初始化视图后,我总是将所有复选框设置为false,将侦听器设置为null,然后检查应检查的内容并初始化侦听器

并且并非在我的Pixel 2 XL的所有设备中都可以正常工作,但在Pixel 2中却无法正常工作,三星s6也存在相同的问题

1 个答案:

答案 0 :(得分:0)

这是回收清单的一般问题。当系统决定重用列表中的子单元格时,该元素会在滚动条上显示。

为避免此类问题,您只需要使用复选框保存每个单元格的状态即可。例如,您可以将状态保存在元素中,或者如果您有id(简单唯一标识符)之类的内容,则只需在其中创建HashSet并在其中管理状态。 例如,在“检查”操作中,您必须将ID添加到HashSet中,而在“取消检查”操作中,请从集合中删除特定ID。 并且必须在onBindViewHolder中检查HashSet.conntains(id)才能知道此单元格是否已“选中”。