https://developer.android.com/topic/libraries/architecture/paging/v3-paged-data?hl=ko
페이징 데이터 로드 및 표시 | Android Developers
이 페이지는 Cloud Translation API를 통해 번역되었습니다. 페이징 데이터 로드 및 표시 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Paging 라이브러리는 대규
developer.android.com
- Paging3 라이브러리를 사용하여 LazyColumn 을 구현했지만, 초기 로드 시 여러 페이지에 대한 API 호출로 인해 처음에 가져오는 데이터 사이즈가 터무니없이 크다고 느껴졌다.
- 안타깝게도 문제의 원인을 찾지 못했다.
- GPT 에 따르면 다음 페이지를 미리 로드하여 사용자가 스크롤할 때, 부드러운 사용자 경험을 제공한다고 하지만, PagingConfig 클래스를 수정해 봐도 반복되는 API 호출은 막을 수 없었다.
- 만약 미리 로드하는 것이 맞다면, 사용자가 보지 않는 데이터가 문제가 되지 않을까 하는 의문이 된다.
- 안타깝게도 문제의 원인을 찾지 못했다.
https://manavtamboli.medium.com/infinite-list-paged-list-in-jetpack-compose-b10fc7e74768
Infinite List / Paged List in Jetpack Compose
Pagination is important in any application containing large datasets. Whether it is from a remote network or from local database.
manavtamboli.medium.com
@Composable
fun LazyListState.OnBottomReached(
loadMore : () -> Unit
){
val shouldLoadMore = remember {
derivedStateOf {
val lastVisibleItem = layoutInfo.visibleItemsInfo.lastOrNull()
?: return@derivedStateOf true
lastVisibleItem.index == layoutInfo.totalItemsCount - 1
}
}
// Convert the state into a cold flow and collect
LaunchedEffect(shouldLoadMore){
snapshotFlow { shouldLoadMore.value }
.collect {
// if should load more, then invoke loadMore
if (it) loadMore()
}
}
}
'안드로이드 > Compose' 카테고리의 다른 글
[Compose] Jetpack Compose 및 State (0) | 2025.01.30 |
---|---|
[Compose] TextField 에서 키보드 hide 처리하기 (0) | 2024.11.23 |
[Compose] Side Effect와 Effect API(LaunchedEffect, rememberCoroutineScope 등) (0) | 2024.11.23 |