仅限房间的分页结果不正确
Incorrect Result from Room only pagination
我正在使用仅数据库分页从我的数据库中对聊天头进行分页。
我的数据库中大约有 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) 每当我的 table 发生变化时,数据源就会突然出现,它会跳过第一页并 return 我剩下的数据。因此,如果我的 table 中有 75 个项目并且我的页面大小为 10,最初数据源将 运行 如下 30(因为初始加载大小提示),10,10,10,10,5
table 数据源的变化将 return 55 项。我不知道为什么会这样
更新
发现问题。由于位置数据源无法正确计算偏移量,我的 RecyclerView 位于 NestedScrollView 内。
现在我已经删除了嵌套的滚动视图,它就像一个魅力
问题的发生是因为 NestedScrollView 导致分页列表适配器无法正确计算偏移量
我正在使用仅数据库分页从我的数据库中对聊天头进行分页。 我的数据库中大约有 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) 每当我的 table 发生变化时,数据源就会突然出现,它会跳过第一页并 return 我剩下的数据。因此,如果我的 table 中有 75 个项目并且我的页面大小为 10,最初数据源将 运行 如下 30(因为初始加载大小提示),10,10,10,10,5 table 数据源的变化将 return 55 项。我不知道为什么会这样
更新
发现问题。由于位置数据源无法正确计算偏移量,我的 RecyclerView 位于 NestedScrollView 内。 现在我已经删除了嵌套的滚动视图,它就像一个魅力
问题的发生是因为 NestedScrollView 导致分页列表适配器无法正确计算偏移量