Con il caricamento differito e la paginazione, puoi supportare elenchi di elementi di grandi dimensioni, incluso un elenco infinito, nella tua app caricando e visualizzando i dati in modo incrementale. Questa tecnica consente di ridurre i tempi di caricamento iniziali e ottimizzare l'utilizzo della memoria, migliorando le prestazioni.
Compatibilità delle versioni
Questa implementazione richiede che il valore minSDK del progetto sia impostato sul livello API 21 o superiore.
Dipendenze
Mostrare contenuti paginati
Con la libreria Paging, puoi caricare e visualizzare pagine di dati da un set di dati più grande acquisito dallo spazio di archiviazione locale o tramite una rete. Utilizza il seguente codice per visualizzare un elenco paginato che mostra una barra di avanzamento per indicare all'utente che vengono recuperati altri dati:
@Composable fun MessageList( modifier: Modifier, 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() } } } @Composable fun MessagePlaceholder(modifier: Modifier) { Box( Modifier .fillMaxWidth() .height(48.dp) ) { CircularProgressIndicator() } } @Composable fun MessageRow( modifier: Modifier, message: Message ) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), verticalArrangement = Arrangement.Center ) { Text(message.sender) Text(message.text) } } } }
Punti chiave del codice
LazyColumn
: questo composable viene utilizzato per visualizzare in modo efficiente un elenco di elementi (messaggi) di grandi dimensioni. Viene visualizzato solo ciò che è visibile sullo schermo, risparmiando risorse e memoria.- L'oggetto
lazyPagingItems
gestisce in modo efficiente il caricamento e la presentazione dei dati paginati all'interno diLazyColumn
. PassaLazyPagingItems
aitems
nel componibileLazyColumn
. MessageRow(message: Text)
è responsabile della visualizzazione dei singoli elementi del messaggio, probabilmente mostrando il mittente e il testo del messaggio all'interno di una scheda.MessagePlaceholder()
fornisce un segnaposto visivo (un'animazione di caricamento) durante il recupero dei dati effettivi del messaggio, migliorando l'esperienza utente.
Risultati
Il seguente video mostra il comportamento risultante di un elenco di grandi dimensioni che recupera i dati mentre l'utente scorre.
Raccolte che contengono questa guida
Questa guida fa parte di queste raccolte di guide rapide selezionate che coprono obiettivi di sviluppo Android più ampi:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=it)
Mostrare un elenco o una griglia
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=it)
Mostrare componenti interattivi
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=it)