그룹 Jetpack Compose의 LazyColumn 및 Paging3
※ 필요한 정보는 공식.와 같이 Paging3과 연계하여 작성하면 자신이 잊어버릴 때 편리하므로 작성해야 합니다.
완성 화면
로 표시됩니다.
gradle
def paging_version = "3.0.1"
implementation "androidx.paging:paging-runtime-ktx:$paging_version"
implementation "androidx.paging:paging-compose:1.0.0-alpha14"
PagingSource
package sobaya.app.repository.paging
import androidx.paging.PagingSource
import androidx.paging.PagingState
class SamplePagingSource : PagingSource<Int, String>() {
override fun getRefreshKey(state: PagingState<Int, String>): Int? {
return state.anchorPosition
}
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, String> {
val perPage = params.loadSize
val page = params.key ?: 1
val next = page + 1
val prev = if (page == 1) null else page - 1
return LoadResult.Page(
data = (0..perPage).map { "$page-$it-DATA" },
prevKey = prev,
nextKey = next
)
}
}
이건 평소 Paging3을 사용하던 것과 똑같아서 특별한 설명이 없어요.오늘에야 비로소
ページ番号-index-DATA(固定文字列)
방법이 추가되었다는 것을 알았다.ViewModel
val samplePagingFlow: Flow<PagingData<String>> = Pager(
PagingConfig(pageSize = 10, initialLoadSize = 10)
) {
SamplePagingSource()
}.flow.cachedIn(viewModelScope)
이것도 평소 Paging3을 사용했을 때와 같다.Composable
@Composable
fun SamplePagingList(
viewModel: UserListViewModel
) {
val lazyPagingItems = viewModel.samplePagingFlow.collectAsLazyPagingItems()
LazyColumn {
items(lazyPagingItems) { sample ->
Text(text = sample ?: "")
}
}
}
아니, 자꾸 쑥스러워.이 지경이 되면 정식으로 쓴 일은 복사가 끝난다.
최후
코드는 이거커밋입니다.
Reference
이 문제에 관하여(그룹 Jetpack Compose의 LazyColumn 및 Paging3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/sobya/articles/1fdf9c92bb4404텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)