短い質問:
BoundaryCallback
ページ+サイズを使用して新しいページとクラスをロードするAPIを使用して、アーキテクチャコンポーネントからページングライブラリでデータベース+ネットワークを処理する正しい方法は何ですか?
調査と説明
現在、アーキテクチャ コンポーネントのページング ライブラリで使用されるクラスBoundaryCallback
は、リスト内の要素のインスタンスをパラメータとして受け取りますが、この要素がどこにあるかという実際のコンテキストはありません。と で発生しonItemAtFrontLoaded
ますonItemAtEndLoaded
。
私の Api は、次のデータのチャンクをロードするために、ページとページのサイズを受け取ることになっています。ページ リスト ビルダーの一部として追加された境界コールバックは、プリフェッチ距離とページ サイズに基づいて、データの次のページをロードするタイミングを通知することになっています。
onItemAtFrontLoaded
Api はページ番号とページのサイズを提供する必要があるため、とで提供されているリストから要素の 1 つを受け取るだけでは、それを Api に送信する方法がわかりませんonItemAtEndLoaded
。このリンクの Google の例を確認すると、最後の要素の名前を使用して次の要素を取得しますが、ページ + サイズの Api には適合しません。
を使用するネットワークのみの別の例もありますがPagedKeyedDatasource
、それをデータベースと BoundaryCallback と組み合わせる方法についてのサンプルや手がかりはありません。
編集:これまでに見つけた解決策は、最後に読み込まれたページを共有設定に保存することだけですが、それは汚いトリックのように聞こえます。
公式の意見については、 https://github.com/googlesamples/android-architecture-components/issues/252#issuecomment-392119468を参照して ください。