Panoramica della libreria Paging Parte di Android Jetpack.
La libreria Paging ti aiuta a 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 per Android consigliata, integrarsi perfettamente con altri componenti Jetpack e fornire un supporto Kotlin di prima classe.
Vantaggi dell'utilizzo della libreria Paging
La libreria Paging include le seguenti funzionalità:
- Memorizzazione nella cache in memoria per i dati impaginati. In questo modo, l'app utilizza le risorse di sistema in modo efficiente quando lavora con i dati impaginati.
- Deduplicazione delle richieste integrata, che contribuisce a garantire che l'app utilizzi la larghezza di banda della rete e le risorse di sistema in modo efficiente.
- Supporto di prima classe per coroutine e flussi Kotlin.
- Supporto integrato per la gestione degli errori, incluse le funzionalità di aggiornamento e nuovo tentativo.
Configurazione
Per importare i componenti di Paging nella tua app per Android, aggiungi le seguenti dipendenze al file build.gradle dell'app:
Kotlin
dependencies { val paging_version = "3.4.2" implementation("androidx.paging:paging-common:$paging_version") // Jetpack Compose integration implementation("androidx.paging:paging-compose:$paging_version") }
Alla moda
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
Architettura della libreria
I componenti della libreria Paging operano in tre livelli dell'app:
- Il livello del repository
- Il livello
ViewModel - Il livello UI
Questa sezione descrive i componenti della libreria Paging che operano in ogni livello e il modo in cui interagiscono per caricare e visualizzare i dati impaginati.
Livello repository
Il componente principale della libreria Paging nel livello del repository è
PagingSource. Ogni oggetto PagingSource definisce un'origine dati e il modo in cui recuperare i dati da quell'origine. Un oggetto PagingSource può caricare dati da qualsiasi singola origine,
incluse origini di rete e database locali.
Un altro componente della libreria Paging che potresti utilizzare è
RemoteMediator. Un oggetto RemoteMediator gestisce l'impaginazione da un'origine dati a più livelli, ad esempio un'origine dati di rete con una cache del database locale.
Livello ViewModel
Il componente Pager fornisce un'API pubblica per la creazione di istanze di PagingData esposte in stream reattivi, in base a un oggetto PagingSource e a un oggetto di configurazione PagingConfig.
Il componente che connette il livello ViewModel alla UI è
PagingData. Un oggetto PagingData è un contenitore per uno snapshot di dati impaginati. Esegue una query su un oggetto PagingSource e memorizza il risultato.
Livello UI
L'API principale dell'interfaccia utente di Paging è collectAsLazyPagingItems(). Espone gli elementi impaginati come un elenco di dati che possono essere facilmente utilizzati dai componenti di layout lazy di Compose, come LazyColumn e LazyRow.
Aggiungi la libreria androidx.paging:paging-compose per utilizzare le API compatibili con Compose che consentono alla UI di reagire automaticamente a caricamenti, aggiornamenti ed errori dei dati senza la necessità di adattatori o logica di differenziazione. Utilizza la funzione di estensione collectAsLazyPagingItems() su un Flow<PagingData> per passare il LazyPagingItems restituito a items() in un LazyColumn.
@Composable fun MessageList(pager: Pager<Int, Message>) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } }
Per saperne di più, consulta Set di dati di grandi dimensioni (impaginazione).
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Carica e visualizza i dati impaginati
- Esegui la migrazione a Paging 3
- Paginazione da rete e database