Grouped result that I want

我正在try 对物品进行分组,就像我在上面的图片中一样,你有一个标题,然后是一个分组,比如一张卡片,卡片里面有一个物品列表.对于卡片中的物品,我想不出使用LazyColumn来实现这一点的方法.目前,我在一个组中有一个包含100多个项目的列表,它们并没有被懒惰地加载.

LazyColumn(
    contentPadding = PaddingValues(vertical = 8.dp),
    verticalArrangement = Arrangement.spacedBy(8.dp),
) {
    items(rows, key = { it.getUniqueId() }) {
        HeaderWithRows(it.title, it.innerRows) {
            Text(it.text)
        }
    }
}

@Composable
fun HeaderWithRows(
    title: String?,
    rows: List<AbstractRow>,
    itemRow: @Composable (AbstractRow) -> Unit,
) {
    Column(modifier = Modifier.padding(horizontal = 16.dp)) {
        Header(
            title = title,
            modifier = Modifier
                .padding(vertical = 8.dp)
        )
        Card {
            Column(modifier = Modifier.padding(vertical = 8.dp)) {
                rows.forEach {
                    itemRow(it)
                }
            }
        }
    }
}

我不能将LazyColumn嵌入到另一个LazyColumn中,并且我try 在循环中使用来自父级的LazyListScope,但也不起作用.

推荐答案

如果您的组很大,并且您希望延迟加载单个组项目,则每个组项目必须在其自己的item {}个以内,没有其他方法.这意味着你不能把它们放在一个Card可合成的东西里--你必须为顶行、中行和底行创建特殊的背景,这样当你把它们放在一起的时候,它看起来就像一张卡片.

Android相关问答推荐

约束布局:垂直链中的视图应将内容包裹到空间的1/3

无法在Android中创建通知频道

Android库中的kotlinCompilerExtensionVersion

Jetpack Compose和Android Studio中的普通设计工具有什么不同?

在Jetpack Compose中,如何判断屏幕是否已重新组合?

如何在使用 PointerInput 修改器时添加点击时的波纹效果

闪屏 API 无法在 Android 12 上运行(API 31、32)

单击按钮时不显示 Toast 消息

通过 adb 解压并重新安装后 Android 应用程序崩溃

在 Jetpack Compose 中使用 ViewModel 实现 startActivity 的最佳实践

如何正确地将图像上传到 Jetpack Compose 中的 LazyList 中的项目?

PullRefreshIndicator 与 ScrollableTabRow 重叠

LazyColumn 项目,隐式接收器无法在此上下文中调用单元

如何关闭可组合对话框?

如何将设备屏幕位置转换为发送事件位置?

Android Studio 错误要求依赖它的库和应用程序针对 Android API 的 33 版或更高版本进行编译.

从expose 的 dropdownMenu 可组合、jetpack 组合中 Select 选项时,不会触发文本字段的 onValueChange

0dp 大小的可组合文件是否可以组合?

如何在 Jetpack Compose 中擦除画布时变得透明,现在我得到白色?

我可以在不解密的情况下使用 JSch 获取加密的 SSH 私钥的类型或 fingerprint 吗?