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 dall'archiviazione locale o tramite una rete. Questo approccio consente alla tua app di utilizzare in modo più efficiente sia la larghezza di banda di rete sia le risorse di sistema. 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 di prima classe per Kotlin.
Vantaggi dell'utilizzo della libreria Paging
La libreria Paging include le seguenti funzionalità:
- Memorizzazione nella cache in memoria per i dati paginati. In questo modo, la tua app utilizza le risorse di sistema in modo efficiente quando lavora con dati impaginati.
- Deduplicazione delle richieste integrata, che contribuisce a garantire che la tua app utilizzi in modo efficiente la larghezza di banda di rete e le risorse di sistema.
- Supporto di prima classe per le coroutine e i flussi Kotlin.
- Supporto integrato per la gestione degli errori, incluse le funzionalità di aggiornamento e riprova.
Configurazione
Per importare i componenti di impaginazione 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 - Livello UI
Questa sezione descrive i componenti della libreria Paging che operano in ogni livello e come collaborano per caricare e visualizzare i dati paginati.
Livello repository
Il componente principale della libreria Paging nel livello repository è
PagingSource. Ogni oggetto
PagingSource definisce un'origine dati e come recuperare i dati da
questa origine. Un oggetto PagingSource può caricare dati da qualsiasi singola origine,
incluse le origini di rete e i database locali.
Un altro componente della libreria Paging che potresti utilizzare è
RemoteMediator. Un oggetto
RemoteMediator gestisce la paginazione 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 creare istanze di PagingData esposte in flussi reattivi, in base a un oggetto PagingSource e a un oggetto di configurazione PagingConfig.
Il componente che connette lo strato ViewModel alla UI è
PagingData. Un oggetto PagingData è un contenitore per uno snapshot dei dati impaginati. Esegue una query su un oggetto
PagingSource e
memorizza il risultato.
Livello UI
L'API principale dell'interfaccia utente di paginazione è collectAsLazyPagingItems(). Espone gli elementi
impaginati come un elenco di dati che possono essere facilmente utilizzati dai componenti
di layout pigro di Compose, come LazyColumn e LazyRow.
Aggiungi la libreria androidx.paging:paging-compose per utilizzare API compatibili con Compose che consentono all'interfaccia utente 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 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
- Caricare e visualizzare i dati impaginati
- Migrazione a Paging 3
- Pagina dalla rete e dal database