Présentation de la bibliothèque Paging Fait partie d'Android Jetpack.

La bibliothèque Paging vous permet de charger et d'afficher des pages de données depuis un ensemble de données plus volumineux, à partir d'un espace de stockage local ou sur réseau. Cette approche permet à votre application d'utiliser plus efficacement la bande passante réseau et les ressources système. Les composants de la bibliothèque Paging s'adaptent à l'architecture des applications Android recommandée, s'intègrent parfaitement aux autres composants Jetpack et offrent une excellente compatibilité avec Kotlin.

Avantages de la bibliothèque Paging

La bibliothèque Paging inclut les fonctionnalités suivantes :

  • Mise en cache en mémoire pour vos données paginées. Cela garantit que votre application utilise efficacement les ressources système lorsqu'elle travaille avec des données paginées.
  • Déduplication des requêtes intégrée, qui permet de garantir que votre application utilise efficacement la bande passante réseau et les ressources système
  • Adaptateurs RecyclerView configurables, lesquels demandent automatiquement des données lorsque l'utilisateur fait défiler la page jusqu'à la fin des données chargées
  • Excellente compatibilité avec les coroutines et les flux Kotlin, ainsi qu'avec LiveData et RxJava
  • Assistance intégrée pour la gestion des exceptions avec fonctionnalités d'actualisation et de nouvelle tentative

Envoyer des commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Vérifiez les problèmes existants de cette bibliothèque avant d'en créer un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus sur l'envoi de commentaires, consultez la documentation sur l'outil Issue Tracker.

Configurer

Pour importer des composants Paging dans votre application Android, ajoutez les dépendances suivantes au fichier build.gradle de votre application :

Groovy

dependencies {
  def paging_version = "3.2.1"

  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.0-beta01"
}

Kotlin

dependencies {
  val paging_version = "3.2.1"

  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.0-beta01")
}

Architecture de la bibliothèque

Les composants de la bibliothèque Paging fonctionnent dans trois couches de votre application :

  • La couche de dépôt
  • La couche ViewModel
  • La couche de l'UI
Une image montre des flux de données paginés des composants PagingSource ou RemoteMediator de la couche du dépôt vers le composant Pager de la couche ViewModel.
    Le composant Pager expose ensuite un flux de PagingData à PagingDataAdapter dans la couche de l'UI.
Figure 1. Exemple illustrant comment la bibliothèque Paging s'intègre à l'architecture de votre application.

Cette section décrit les composants de la bibliothèque Paging utilisés dans chaque couche, et explique comment ils fonctionnent ensemble pour charger et afficher les données paginées.

Couche de dépôt

PagingSource est le composant principal de la bibliothèque Paging dans la couche du dépôt. Chaque objet PagingSource définit une source de données et explique comment les récupérer. Un objet PagingSource peut charger des données à partir de n'importe quelle source, y compris des sources réseau et des bases de données locales.

Vous pouvez également utiliser le composant RemoteMediator de la bibliothèque Paging. Un objet RemoteMediator gère la pagination à partir d'une source de données multicouche, telle qu'une source de données réseau avec un cache de base de données locale.

Couche ViewModel

Le composant Pager fournit une API publique pour créer des instances de PagingData exposées dans des flux réactifs en fonction d'un objet PagingSource et d'un objet de configuration PagingConfig.

PagingData est le composant qui associe la couche ViewModel à l'UI. Un objet PagingData est un conteneur pour un instantané de données paginées. Il interroge un objet PagingSource et stocke le résultat.

Couche de l'interface utilisateur

Composant principal de la bibliothèque Paging dans la couche de l'UI, PagingDataAdapter est un adaptateur RecyclerView qui gère les données paginées.

Vous pouvez également utiliser le composant AsyncPagingDataDiffer inclus pour créer un adaptateur personnalisé.

Ressources supplémentaires

Pour en savoir plus sur la bibliothèque Paging, consultez ces ressources supplémentaires :

Ateliers de programmation

Exemples