android - 使用 recyclerview-selection 库时,RecyclerView 不会收到有关视觉更改的通知
问题描述
我已经成功实现了 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, ...)
}
解决方案
根据文档,我通过覆盖以下方法解决了问题:
RecyclerView.Adapter:
override fun onViewAttachedToWindow(holder: RecyclerView.ViewHolder) {
val isSelected = selectionTracker.isSelected(holder.itemId)
holder.setItemSelected(isSelected)
}
我不知道这是否是解决问题的推荐方法,但也许它会帮助某人。如果您对我有更多提示或信息,请告诉我!
推荐阅读
- python - 如何在 Python Pandas 的 DataFrame 中实现循环的每次迭代?
- amazon-web-services - AWS Amplify GraphQL 中突然未定义字段“所有者”
- wicket - Wicket:在 DataView 中更新 DropDownChoice
- css - Squarespace CSS:当我将带边框列的代码定位到一个部分时,移动宽度缩小到不到屏幕的一半
- sql - 在 SQL 中计算插头/余额
- php - PHP PDO Json 未在 React Native 中显示
- javascript - Google Auth Popup 不适用于 React 17 应用程序;收到 React 警告是为什么或如何解决?
- typescript - Vue.js 自定义指令不会动态更新状态
- amazon-web-services - 如果用户未在角色的信任策略中描述,IAM 用户是否可以担任角色?
- python - 提取不同行中的多个值