如何使用 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.itemsandroidx.paging.compose.collectAsLazyPagingItemscategories 也是 LazyPagingItems<Category>.

类型

它与 LazyColumnLazyRow 完美兼容,但与 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])
    }
}