Dzięki leniwemu ładowaniu i stronicowaniu możesz obsługiwać w aplikacji duże listy elementów, w tym listy nieskończone, przez stopniowe wczytywanie i wyświetlanie danych. Ta technika pozwala skrócić początkowy czas wczytywania i zoptymalizować wykorzystanie pamięci, co zwiększa wydajność.
Wyniki
Poniższy film pokazuje, jak zachowuje się duża lista, która pobiera dane, gdy użytkownik przewija ekran.
Zgodność wersji
Ta implementacja wymaga, aby w projekcie ustawić minSDK na poziom interfejsu API 21 lub wyższy.
Zależności
Wyświetlanie treści podzielonych na strony
Dzięki bibliotece Paging możesz wczytywać i wyświetlać strony danych z większego zbioru danych pozyskanego z pamięci lokalnej lub przez sieć. Użyj poniższego kodu, aby wyświetlić listę podzieloną na strony z paskiem postępu, który informuje użytkownika, że pobierane są kolejne dane:
@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) } } } }
Najważniejsze informacje o kodzie
LazyColumn: ten element kompozycyjny służy do wydajnego wyświetlania dużej listy elementów (wiadomości). Renderuje tylko elementy widoczne na ekranie, co pozwala oszczędzać zasoby i pamięć.- Obiekt
lazyPagingItemsefektywnie zarządza wczytywaniem i prezentacją danych podzielonych na strony w ramachLazyColumn. Przekazuje onLazyPagingItemsdoitemsw funkcji kompozycyjnejLazyColumn. MessageRow(message: Text)odpowiada za renderowanie poszczególnych elementów wiadomości, prawdopodobnie wyświetlając nadawcę i tekst wiadomości na karcie.MessagePlaceholder()zapewnia wizualny obiekt zastępczy (wskaźnik wczytywania) podczas pobierania rzeczywistych danych wiadomości, co poprawia wrażenia użytkownika.
Kolekcje zawierające ten przewodnik
Ten przewodnik jest częścią tych kolekcji krótkich przewodników, które obejmują szersze cele związane z programowaniem na Androida:
Wyświetlanie listy lub siatki
Wyświetlanie komponentów interaktywnych