我知道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)的方法,但是我希望也可以在Paging 3中使用该方法,因为我不愿意降级Paging正在进行的其他功能3。