問題タブ [android-paging-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ページング 3 - PagingDataAdapter の更新が完了し、DiffUtil の差分が完了した後に RecyclerView の上部にスクロールする方法は?
ネットワークから新しいデータをフェッチしながら、キャッシュされたデータを表示する RemoteMediator で Paging 3 を使用しています。PagingDataAdapter
(呼び出して)リフレッシュrefresh()
すると、リフレッシュが完了した後に RecyclerView が一番上までスクロールするようになります。コードラボではloadStateFlow
、次の方法でこれを処理しようとしています。
これは確かに上にスクロールしますが、DiffUtil が終了する前です。これは、実際に新しいデータが一番上に挿入された場合、RecyclerView が上にスクロールしないことを意味します。
RecyclerView アダプターには、AdapterDataObserver
DiffUtil が差分処理を終了したときに通知を受け取ることができるコールバックがあることを知っています。PREPEND
ただし、これにより、アダプターの読み込み状態とのあらゆる種類の競合状態がAPPEND
発生し、DiffUtil も実行されます (ただし、ここでは一番上までスクロールしたくありません)。
機能する解決策の 1 つは、 に渡しPagingData.empty()
てPagingDataAdapter
同じクエリを再実行することです (が空になり、更新するものが何もないrefresh
ため、呼び出すだけでは機能しませPagingData
ん) が、更新がわかるまで古いデータを表示したままにしておくことをお勧めします。実際に成功しました。