Con il caricamento lento 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 la memoria utilizzata, migliorando le prestazioni.
Risultati
Il seguente video mostra il comportamento risultante di un elenco di grandi dimensioni che recupera i dati mentre l'utente scorre.
Compatibilità delle versioni
Questa implementazione richiede che il minSDK del progetto sia impostato sul livello API 21 o successivo.
Dipendenze
Visualizza i contenuti impaginati
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 impaginato che mostra una barra di avanzamento per indicare all'utente che sono in fase di recupero 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 sul codice
LazyColumn: questo composable viene utilizzato per visualizzare in modo efficiente un elenco di elementi di grandi dimensioni (messaggi). Esegue il rendering solo degli elementi visibili sullo schermo, risparmiando risorse e memoria.- L'oggetto
lazyPagingItemsgestisce in modo efficiente il caricamento e la presentazione dei dati impaginati all'interno diLazyColumn. PassaLazyPagingItemsaitemsnel composableLazyColumn. MessageRow(message: Text)è responsabile del rendering 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'icona di caricamento) durante il recupero dei dati effettivi del messaggio, migliorando l'esperienza utente.
Raccolte che contengono questa guida
Questa guida fa parte di queste raccolte di guide rapide selezionate che coprono obiettivi di sviluppo Android più ampi:
Visualizza un elenco o una griglia
Visualizza i componenti interattivi