首页 > 解决方案 > 没有 RecyclerView 的 Paging3

问题描述

我知道 Paging3 库旨在与 RecyclerView 一起使用,但是我有一个用例,其中分页结果也显示在地图上。如果您查看 PagingDataAdapter 类的内部,您会注意到它由 AsyncPagingDiffer 支持。所以现在,我正在尝试使用 AsyncPagingDiffer 类使其工作,该类反过来接收 ListUpdateCallback,以便在发生数据更新时通知 UI。因此,只要 ListUpdateCallback 调度任何更新,我应该能够通过调用 AsyncPagingDiffer.snapshot() 来检索数据。

这个片段很好地说明了我正在尝试做的事情:

class MapAdapter : ListUpdateCallback {

    private val differ = AsyncPagingDataDiffer(MapDiff(), this)

    suspend fun submitData(pagingData: PagingData<Foo>) {
        differ.submitData(pagingData)
    }

    override fun onInserted(position: Int, count: Int) {
        val data = differ.snapshot()
        // Update UI
    }

    // Other callbacks...
}

但是当试图以这种方式恢复它时,快照总是空的或过期的。换句话说,快照实际上只有在回调已经被通知后才可用,这对我来说是不受欢迎的行为。

我可以确认这种方法适用于 Paging 2(或其他任何名称),但我希望也有一些方法可以将它与 Paging 3 一起使用,因为我不愿意降级 Paging 3 正在进行的其他功能。

标签: androidandroid-jetpackandroid-pagingandroid-paging-3

解决方案


推荐阅读