微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在分页 3 中使用 recyclerview 选择

如何解决在分页 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 举报,一经查实,本站将立刻删除。