复选框自动显示为在 ExpandableListView 中选中
Checbox is automatically showing as selected in ExpandableListView
我有一个只有一个 child 且最多 2 个组的 ExpandableListView
这个 child 有一个带有 4-5 个复选框的组视图 - 所有组视图都使用相同的 child视图
当我检查第一个 child 中的一个元素并向下滚动时,我看到相同的元素显示为在第二组中被选中
我重复显示为已选中,它不调用侦听器只是显示为已选中
我读到这是列表视图中的一个滚动错误,但我看到所有的问题都是它为我调用监听器它不调用监听器只是在我滚动时显示为选中
The yellow its the other group
初始化视图后,我总是将所有复选框设置为 false,将侦听器设置为 null,然后检查应该检查的内容并初始化侦听器
并没有在我的 Pixel 2 XL 的所有设备中发生,但在 Pixel 2 中却没有,Samsung s6 有同样的问题
这是回收列表的一般问题。当系统决定重用列表中的子单元格时,这会出现在滚动条上。
为避免此类问题,您只需使用复选框保存每个单元格的状态。例如,您可以在元素内保存状态,或者如果您有类似 id(简单唯一标识符)的东西,只需创建 HashSet 并在那里管理状态。
例如,在 "check" 操作中,您必须将您的 id 添加到 HashSet,而在 "uncheck" 操作中,您必须从集合中删除特定的 id。
在您的 onBindViewHolder 中,您必须检查 HashSet.conntains(id) 才能知道这个单元格 "checked".
我有一个只有一个 child 且最多 2 个组的 ExpandableListView 这个 child 有一个带有 4-5 个复选框的组视图 - 所有组视图都使用相同的 child视图
当我检查第一个 child 中的一个元素并向下滚动时,我看到相同的元素显示为在第二组中被选中 我重复显示为已选中,它不调用侦听器只是显示为已选中
我读到这是列表视图中的一个滚动错误,但我看到所有的问题都是它为我调用监听器它不调用监听器只是在我滚动时显示为选中
The yellow its the other group
初始化视图后,我总是将所有复选框设置为 false,将侦听器设置为 null,然后检查应该检查的内容并初始化侦听器
并没有在我的 Pixel 2 XL 的所有设备中发生,但在 Pixel 2 中却没有,Samsung s6 有同样的问题
这是回收列表的一般问题。当系统决定重用列表中的子单元格时,这会出现在滚动条上。
为避免此类问题,您只需使用复选框保存每个单元格的状态。例如,您可以在元素内保存状态,或者如果您有类似 id(简单唯一标识符)的东西,只需创建 HashSet 并在那里管理状态。 例如,在 "check" 操作中,您必须将您的 id 添加到 HashSet,而在 "uncheck" 操作中,您必须从集合中删除特定的 id。 在您的 onBindViewHolder 中,您必须检查 HashSet.conntains(id) 才能知道这个单元格 "checked".