データベースのみのページネーションを使用して、データベースからチャットヘッドをページネーションしています。私のデータベースには約450のエントリがあります
@Query("select * from ChatHeadMaster where archive= :archive order by chatBot desc,lastMessageTimestamp desc")
fun fetchPagedChatHeadList(archive: Int): DataSource.Factory<Int,ChatHeadWithMessages>
ページネーションで直面している2つの問題があります
1)データソースはページごとにデータをフェッチするとしても、すべてのデータを一度にフェッチします。したがって、ページ サイズを 30 に設定すると、データ全体がフェッチされるまで 30 のチャンクでデータがフェッチされ、完全なデータがフェッチされるまでメイン スレッドがハングします。
2) テーブルに変更があると、データ ソースが突然動作し、最初のページをスキップして残りのデータを返します。したがって、テーブルに 75 個のアイテムがあり、ページ サイズが 10 の場合、最初のデータ ソースは 30 (初期ロード サイズのヒントのため)、10,10,10,10,5 のように実行され、テーブル データ ソースが変更されると 55 個のアイテムが返されます。 . なぜこれが起こっているのかわかりません
アップデート
問題が見つかりました。位置データ ソースがオフセットを正しく計算できなかったため、私の RecyclerView は NestedScrollView 内にありました。今のところ、ネストされたスクロールビューを削除しましたが、それは魅力のように機能します