지연 로드와 Paging을 사용하면 데이터를 점진적으로 로드하고 표시하여 앱에서 무한 목록을 비롯한 대규모 항목 목록을 지원할 수 있습니다. 이 기법을 사용하면 초기 로드 시간을 줄이고 메모리 사용량을 최적화하여 성능을 개선할 수 있습니다.
결과
다음 동영상은 사용자가 스크롤할 때 데이터를 가져오는 대규모 목록의 결과 동작을 보여줍니다.
버전 호환성
이 구현을 사용하려면 프로젝트 minSDK를 API 수준 21 이상으로 설정해야 합니다.
종속 항목
페이징된 콘텐츠 표시
Paging 라이브러리를 사용하면 로컬 저장소에서나 네트워크를 통해 가져온 대규모 데이터 세트의 데이터 페이지를 로드하고 표시할 수 있습니다. 다음 코드를 사용하여 진행률 표시줄을 표시하는 페이지로 나눈 목록을 표시하여 사용자에게 더 많은 데이터를 가져오고 있음을 나타냅니다.
@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) } } } }
코드에 관한 핵심 사항
LazyColumn: 이 컴포저블은 큰 항목 목록(메시지)을 효율적으로 표시하는 데 사용됩니다. 화면에 표시되는 항목만 렌더링하므로 리소스와 메모리가 절약됩니다.lazyPagingItems객체는LazyColumn내에서 페이징된 데이터의 로드 및 표시를 효율적으로 관리합니다.LazyPagingItems를LazyColumn컴포저블의items에 전달합니다.MessageRow(message: Text)는 개별 메시지 항목을 렌더링하는 역할을 하며, 카드 내에 메시지의 발신자와 텍스트를 표시할 수 있습니다.MessagePlaceholder()는 실제 메시지 데이터를 가져오는 동안 시각적 플레이스홀더(로드 스피너)를 제공하여 사용자 환경을 개선합니다.
이 가이드가 포함된 컬렉션
이 가이드는 더 광범위한 Android 개발 목표를 다루는 선별된 빠른 가이드 모음의 일부입니다.
목록 또는 그리드 표시
목록과 그리드를 사용하면 앱에서 사용자가 쉽게 사용할 수 있는 시각적으로 보기 좋은 형식으로 컬렉션을 표시할 수 있습니다.
대화형 구성요소 표시
구성 가능한 함수를 사용하여 Material Design 디자인 시스템을 기반으로 아름다운 UI 구성요소를 쉽게 만드는 방법을 알아봅니다.
Compose 기본사항(동영상 모음)
이 동영상 시리즈에서는 다양한 Compose API를 소개하고, 사용 가능한 API와 사용 방법을 빠르게 보여줍니다.
궁금한 점이나 의견이 있나요?
자주 묻는 질문(FAQ) 페이지로 이동하여 빠른 가이드를 확인하거나 Google에 의견을 보내주세요.