如何解决在分页 3 中使用 recyclerview 选择
我正在尝试将 Selection ( https://developer.android.com/reference/androidx/recyclerview/selection/package-summary ) 与新的分页库(因此 paging 3 )一起使用
使用 Paging 2 是可行的,因为我们使用的是 Pagedlistadapter 并且它可以与 Selection 库一起使用,但是现在使用新的 PagingDataAdapter 我不能再让它工作了。
https://developer.android.com/reference/kotlin/androidx/paging/PagingDataAdapter
我们正在失去 getCurrentList(),setHasstableIds() 现在将返回 UnsupportedOperationException。
因此,如果有人对此感到担忧,我将不胜感激。
解决方法
在新的 Paging3 库中,您可以使用 snapShot()
类的 PagingDataAdapter
方法获取当前列表。
我最近遇到了相同的密钥提供者问题,所以我实现了一个这样的自定义:
class MyItemKeyProvider(private val adapter: MyPagingAdapter) :
ItemKeyProvider<String>(SCOPE_CACHED) {
override fun getKey(position: Int): String = adapter.snapshot().items[position].id
override fun getPosition(key: String): Int = adapter.snapshot().items.indexOfFirst { it.id == key }
,
如果您已经使用 Paging 2,我建议您从实现您自己的 ItemKeyProvider<K>
开始。无法使用打包的 StableIdKeyProvider
,因为它需要启用稳定 ID,而且如您所说,PagingDataAdapter
不支持稳定 ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。