Panoramica della libreria di paging Parte di Android Jetpack.

La libreria di paging consente di caricare e visualizzare pagine di dati da un set di dati più grande dallo spazio di archiviazione locale o su una rete. Questo approccio consente alla tua app di utilizzare sia la larghezza di banda della rete sia le risorse di sistema in modo più efficiente. I componenti della libreria Paging sono progettati per adattarsi all'architettura delle app Android consigliata, si integrano in modo pulito con altri componenti Jetpack e forniscono un supporto Kotlin di prima qualità.

Vantaggi dell'utilizzo della libreria di paging

La libreria di paging include le seguenti funzionalità:

  • Memorizzazione nella cache dei dati impaginati. Questo contribuisce a garantire che la tua app utilizzi le risorse di sistema in modo efficiente mentre lavori con i dati impaginati.
  • Deduplicazione integrata delle richieste, che aiuta a garantire che l'app utilizzi la larghezza di banda della rete e le risorse di sistema in modo efficiente.
  • Adattatori RecyclerView configurabili che richiedono automaticamente i dati man mano che l'utente scorre verso la fine dei dati caricati.
  • Assistenza di primo livello per coroutine e flussi Kotlin, nonché per LiveData e RxJava.
  • Supporto integrato per la gestione degli errori, incluse funzionalità di aggiornamento e nuovo tentativo.

Fornisci feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Contattaci se scopri nuovi problemi o hai idee per migliorare la libreria. Controlla i problemi esistenti per questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Consulta la documentazione di Issue Tracker per ulteriori informazioni sull'invio di feedback.

Configurazione

Per importare i componenti di Paging nella tua app Android, aggiungi le seguenti dipendenze al file build.gradle dell'app:

Alla moda

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")
}

Architettura delle biblioteche

I componenti della libreria di Paging operano in tre livelli della tua app:

  • Il livello del repository
  • Il livello ViewModel
  • Il livello UI
Un'immagine che mostra i flussi di dati impaginati dai componenti PagingSource o RemoteMediator nel livello del repository al componente Pager nel livello ViewModel.
    Quindi il componente Pager espone un flusso di PagingData a PagingDataAdapter nel livello UI.
Figura 1. Un esempio di come la libreria di Paging si inserisce nell'architettura della tua app.

Questa sezione descrive i componenti della libreria di Paging che operano a ogni livello e il modo in cui funzionano insieme per caricare e visualizzare i dati impaginati.

Livello repository

Il componente principale della libreria di paging nel livello del repository è PagingSource. Ogni oggetto PagingSource definisce un'origine dei dati e il modo in cui recuperarli. Un oggetto PagingSource può caricare dati da qualsiasi singola origine, inclusi origini di rete e database locali.

Un altro componente della libreria di Paging che potresti utilizzare è RemoteMediator. Un oggetto RemoteMediator gestisce il paging da un'origine dati a più livelli, ad esempio un'origine dati di rete con una cache di database locale.

Livello ViewModel

Il componente Pager fornisce un'API pubblica per la creazione di istanze di PagingData esposte nei flussi reattivi, in base a un oggetto PagingSource e un oggetto di configurazione PagingConfig.

Il componente che collega il livello ViewModel all'interfaccia utente è PagingData. Un oggetto PagingData è un contenitore per un'istantanea di dati impaginati. Esegue una query su un oggetto PagingSource e archivia il risultato.

Livello UI

Il componente principale della libreria di paging nel livello dell'interfaccia utente è PagingDataAdapter, un adattatore RecyclerView che gestisce i dati impaginati.

In alternativa, puoi usare il componente AsyncPagingDataDiffer incluso per creare il tuo adattatore personalizzato.

Risorse aggiuntive

Per saperne di più sulla libreria Paging, consulta le seguenti risorse aggiuntive:

Codelab

Samples