问题描述
我已经成功实现了 recyclerview-selection 库。现在我正在尝试使用 SelectionTracker.setItemsSelected(keys: Iterable<K>,selected: boolean)
方法制作“选择所有项目”按钮。到现在为止还挺好。我的问题是,有些看不见的物品没有经过目视检查。但是,如果我按下按钮之前向下滚动到列表的末尾,就会发生这种情况。在引擎盖下,所有项目都得到检查,我可以在应用栏的文本上看到。
示例:我滚动到列表末尾并备份,然后按“选择所有项目”按钮。正如您在图片中看到的,有些项目没有进行视觉检查。
如果我按后退按钮删除所有项目的选中状态,也会发生类似的事情。
现在我的问题是: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)
}
我不知道这是否是解决问题的推荐方法,但也许它会对某人有所帮助。如果您有更多提示或信息,请告诉我!