如何使用 Jetpack Compose 分页与 LazyVerticalGrid
How to use jetpack compose paging with LazyVerticalGrid
我正在尝试使用 LazyVerticalGrid 显示分页项目。我正在尝试的代码如下所示。
val categories = repo.categories.collectAsLazyPagingItems()
LazyVerticalGrid(
cells = GridCells.Fixed(2),
modifier = Modifier.padding(8.dp)
) {
items(categories) { category ->
Box(Modifier.padding(8.dp)) {
CategoryView(category)
}
}
}
请注意,我已经导入了 androidx.paging.compose.items
和 androidx.paging.compose.collectAsLazyPagingItems
。 categories
也是 LazyPagingItems<Category>
.
类型
它与 LazyColumn
和 LazyRow
完美兼容,但与 LazyVerticalGrid
不兼容。
我得到的错误是:
Type mismatch.
Required:
Int
Found:
LazyPagingItems<Category>
我想出了一个解决方案,为 LazyGridScope
编写了一个扩展函数,就像 androidx.paging:paging-compose
库中为 LazyListScope
编写的扩展函数一样。
@ExperimentalFoundationApi
public fun <T: Any> LazyGridScope.items(
lazyPagingItems: LazyPagingItems<T>,
itemContent: @Composable LazyItemScope.(value: T?) -> Unit
) {
items(lazyPagingItems.itemCount) { index ->
itemContent(lazyPagingItems[index])
}
}
我正在尝试使用 LazyVerticalGrid 显示分页项目。我正在尝试的代码如下所示。
val categories = repo.categories.collectAsLazyPagingItems()
LazyVerticalGrid(
cells = GridCells.Fixed(2),
modifier = Modifier.padding(8.dp)
) {
items(categories) { category ->
Box(Modifier.padding(8.dp)) {
CategoryView(category)
}
}
}
请注意,我已经导入了 androidx.paging.compose.items
和 androidx.paging.compose.collectAsLazyPagingItems
。 categories
也是 LazyPagingItems<Category>
.
它与 LazyColumn
和 LazyRow
完美兼容,但与 LazyVerticalGrid
不兼容。
我得到的错误是:
Type mismatch.
Required:
Int
Found:
LazyPagingItems<Category>
我想出了一个解决方案,为 LazyGridScope
编写了一个扩展函数,就像 androidx.paging:paging-compose
库中为 LazyListScope
编写的扩展函数一样。
@ExperimentalFoundationApi
public fun <T: Any> LazyGridScope.items(
lazyPagingItems: LazyPagingItems<T>,
itemContent: @Composable LazyItemScope.(value: T?) -> Unit
) {
items(lazyPagingItems.itemCount) { index ->
itemContent(lazyPagingItems[index])
}
}