我将 Paging 3 与 RemoteMediator 和 Room 结合使用,通过 PagingDataAdapter 在 RecyclerView 中显示项目列表。我们遇到一个问题,当数据库中保存的基础数据多次更新时(在某些情况下),会导致列表跳转到开头。我已经成功创建了一个可重现的场景:
然后我执行以下操作之一:
看来潜在的问题是,在数据已经失效一次并且除当前页面之外的所有页面都已从回收器视图中删除后,分页库无法正确处理额外的数据库失效。
我的问题是:
存储库中的相关代码:
@MainThread
fun fetchNewData(...): LiveData<PagingData<DisplayCard>> {
val pagingSourceFactory = ... // Get appropriate PagingSource based on some conditions
@OptIn(ExperimentalPagingApi::class)
return Pager(
config = PagingConfig(
pageSize = DiscussionUseCase.PAGE_SIZE, // PAGE_SIZE = 20
prefetchDistance = 2,
enablePlaceholders = false,
initialLoadSize = DiscussionUseCase.PAGE_SIZE // PAGE_SIZE = …Run Code Online (Sandbox Code Playgroud) android kotlin android-paging android-paging-library android-paging-3