使用 recyclerview-selection 库时,RecyclerView 不会收到视觉变化通知

问题描述

我已经成功实现了 recyclerview-selection 库。现在我正在尝试使用 SelectionTracker.setItemsSelected(keys: Iterable<K>,selected: boolean) 方法制作“选择所有项目”按钮。到现在为止还挺好。我的问题是,有些看不见的物品没有经过目视检查。但是,如果我按下按钮之前向下滚动到列表的末尾,就会发生这种情况。在引擎盖下,所有项目都得到检查,我可以在应用栏的文本上看到。

示例:我滚动到列表末尾并备份,然后按“选择所有项目”按钮。正如您在图片中看到的,有些项目没有进行视觉检查。

'n' and 'o' are not chekced

如果我按后退按钮删除所有项目的选中状态,也会发生类似的事情。


现在我的问题是:recyclerview 库中是否存在导致这种奇怪的 gui 行为的错误,或者我做错了什么?我正在使用以下版本:recyclerview-selection:1.1.0-rc03


编辑:

这里是我的 RecyclerView.ViewHolder 类的绑定方法

fun bind(event: Event,selected: Boolean) {
    val imgSize = if (selected) SELECTION_IMG_EXTENDED_SIZE else SELECTION_IMG_REDUCED_SIZE
    animateResize(imgSize,...)
}

解决方法

根据documentation,我通过覆盖以下方法解决了问题:

RecyclerView.Adapter:

override fun onViewAttachedToWindow(holder: RecyclerView.ViewHolder) {
      val isSelected = selectionTracker.isSelected(holder.itemId)
      holder.setItemSelected(isSelected)
}

我不知道这是否是解决问题的推荐方法,但也许它会对某人有所帮助。如果您有更多提示或信息,请告诉我!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...