我正在使用仅数据库分页来对我的数据库中的聊天头进行分页。我的数据库中有大约 450 个输入
@Query("select * from ChatHeadMaster where archive= :archive order by chatBot desc,lastMessageTimestamp desc")
fun fetchPagedChatHeadList(archive: Int): DataSource.Factory<Int,ChatHeadWithMessages>
我在分页方面面临两个问题
1)即使数据源确实逐页获取数据,但它一次获取所有数据。因此,如果我将页面大小设置为 30,它将以 30 个块的形式获取数据,直到获取整个数据,因为我的主线程挂起,直到获取完整数据
2)每当我的表发生变化时,数据源就会突然出现,它会跳过第一页并返回剩余的数据。因此,如果我的表中有 75 个项目并且我的页面大小为 10,则最初数据源将按如下方式运行 30(由于初始加载大小提示)、10、10、10、10、5,并且表数据源的更改将返回 55 个项目. 我不知道为什么会这样
更新
发现问题。我的 RecyclerView 位于 NestedScrollView 内,因为位置数据源无法正确计算偏移量。现在我已经删除了嵌套滚动视图,它就像一个魅力