ページング ライブラリの概要 Android Jetpack の一部。
ページング ライブラリを使用すれば、大規模なデータセットからデータのページをローカル ストレージやネットワーク経由で読み込んで表示できます。このアプローチにより、アプリはネットワーク帯域幅とシステム リソースの両方をより効率的に使用できます。ページング ライブラリのコンポーネントは、推奨の Android アプリ アーキテクチャに適合し、他の Jetpack コンポーネントと正常に統合され、充実した Kotlin サポートを提供するように設計されています。
ページング ライブラリを使用する利点
ページング ライブラリには以下の機能があります。
- ページング データに対するメモリ内キャッシュ。アプリがページング データを操作しながら、システム リソースを効率的に使用できるようにします。
- 組み込みのリクエスト重複除去。アプリでネットワーク帯域幅とシステム リソースを効率的に使用できるようにします。
- 読み込まれたデータの一番下までスクロールすると、データが自動的にリクエストされる構成可能な
RecyclerView
アダプター。 - Kotlin のコルーチンとフロー、
LiveData
、RxJava に関するサポート。 - 更新機能や再試行機能など、エラー処理の組み込みサポート。
フィードバックを送信
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
フィードバックの送信について詳しくは、Issue Tracker のドキュメントをご覧ください。
セットアップ
Paging コンポーネントを Android アプリにインポートするには、次の依存関係をアプリの build.gradle
ファイルに追加します。
Groovy
dependencies { def paging_version = "3.3.2" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Android dependencies for tests testImplementation "androidx.paging:paging-common:$paging_version" // optional - RxJava2 support implementation "androidx.paging:paging-rxjava2:$paging_version" // optional - RxJava3 support implementation "androidx.paging:paging-rxjava3:$paging_version" // optional - Guava ListenableFuture support implementation "androidx.paging:paging-guava:$paging_version" // optional - Jetpack Compose integration implementation "androidx.paging:paging-compose:3.3.2" }
Kotlin
dependencies { val paging_version = "3.3.2" implementation("androidx.paging:paging-runtime:$paging_version") // alternatively - without Android dependencies for tests testImplementation("androidx.paging:paging-common:$paging_version") // optional - RxJava2 support implementation("androidx.paging:paging-rxjava2:$paging_version") // optional - RxJava3 support implementation("androidx.paging:paging-rxjava3:$paging_version") // optional - Guava ListenableFuture support implementation("androidx.paging:paging-guava:$paging_version") // optional - Jetpack Compose integration implementation("androidx.paging:paging-compose:3.3.2") }
ライブラリのアーキテクチャ
ページング ライブラリ コンポーネントは、アプリの 3 つのレイヤで動作します。
- リポジトリ レイヤ
ViewModel
レイヤ- UI レイヤ
このセクションでは、各レイヤで動作するページング ライブラリ コンポーネントについて、およびそれらがどのように連携してページング データの読み込みと表示を行うかについて説明します。
リポジトリ レイヤ
リポジトリ レイヤのメインのページング ライブラリ コンポーネントは PagingSource
です。各 PagingSource
オブジェクトは、データのソースと、そのソースからデータを取得する方法を定義します。PagingSource
オブジェクトを使用すると、ネットワーク ソースやローカル データベースなど、任意の単一ソースからデータを読み込めます。
他に使用可能なページング ライブラリ コンポーネントには、RemoteMediator
があります。RemoteMediator
オブジェクトは、ローカル データベース キャッシュを使用するネットワーク データソースなど、階層化されたデータソースからのページングを処理します。
ViewModel レイヤ
Pager
コンポーネントは、PagingSource
オブジェクトと PagingConfig
構成オブジェクトに基づき、リアクティブ ストリームで公開される PagingData
のインスタンスを構築するための公開 API を提供します。
ViewModel
レイヤを UI に接続するコンポーネントは、PagingData
です。PagingData
オブジェクトは、ページ分けされたデータのスナップショットを格納するコンテナです。PagingSource
オブジェクトに対してクエリを実行し、結果を保存します。
UI レイヤ
UI レイヤのメインのページング ライブラリ コンポーネントは PagingDataAdapter
です。これは、ページ分けされたデータを処理する RecyclerView
アダプターです。
付属の AsyncPagingDataDiffer
コンポーネントを使用して、独自のカスタム アダプターを作成することもできます。
参考情報
ページング ライブラリについて詳しくは、以下の参考情報をご覧ください。
Codelab
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- ページング データを読み込む、表示する
- Paging 3 に移行する
- ネットワークとデータベースからページングする