我有一个只有一个子组和最多两个组的ExpandableListView,这个子组有一个带有4-5复选框的群视图,所有的群视图都使用相同的子视图。
当我检查第一个子元素时,我向下滚动,发现相同的元素显示为我重复的第二个组中选择的元素,它不是调用监听器,而是以选中的形式显示。
我读到这是listview中的一个滚动错误,但我看到所有的人都有这样的问题:它为我调用侦听器--它不是调用监听器,而是按我滚动时选择的方式显示。
初始化视图后,我总是将所有复选框设置为false,将侦听器设置为null,然后检查应该检查哪些内容并初始化侦听器。
而且并不是所有的设备都在我的像素2中运行良好,但在Pixel 2中不是这样,三星s6也有同样的问题。
发布于 2018-11-21 13:10:16
这是一个一般的回收清单问题。当系统决定重用列表中的子单元时,这将出现在滚动中。
为了避免这样的问题,您只需使用复选框保存每个单元格的状态。例如,如果您有id(简单唯一标识符),只需在其中创建HashSet和管理状态,则可以将状态保存在元素OR中。例如,在"check“操作中,您必须将您的id添加到HashSet中,并在"uncheck”操作上从集合中删除特定的id。在您的onBindViewHolder中,您必须检查HashSet.conntains(id)才能知道这个单元格是否“已检查”。
https://stackoverflow.com/questions/53411772
复制相似问题