我如何在项目(LazyColumn)中传递2个列表



我有LazyColumn,我想在items中传递两个列表,我该怎么做

如果可能的话,我也想这样做

LazyColumn(
modifier = Modifier.fillMaxHeight(0.85f)
) {
items(cartItems,products) { cartItems,product ->
CardProduct2(cartItems, product)
}
}

你不能。但是你可以试着这样做:

LazyColumn {
items(max(cars.size, products.size)) { idx ->
CardProduct(cars.getOrNull(idx), products.getOrNull(idx)) // Assume that your CardProduct composable are applying null values
}
}

或者更好地将这些列表合并成一个

我假设如果你在CardProduct内部传递一个列表是因为你正在使用LazyColumn内部来绘制该列表。

只需输入

Column {
CardProduct2(cartItems, product)
}

注意LazyColumns嵌套,你会得到一个编译错误,如果你做下面的

LazyColumn(
modifier = Modifier.fillMaxHeight(0.85f)
) {
items(cartItems, null) { cartItems ->
CardProduct2(cartItems)
}
items(null, product) { product ->
CardProduct2(product)
}
}

在CardProduct2里面做一个简单的空检查来绘制两者中的任何一个,或者如果你需要两个一起创建CardProduct3,只接受产品列表。但是CardProduct内部不应该是任何LazyColumn代码,它应该只是卡的详细信息本身

LazyColumn(
modifier = Modifier.fillMaxHeight(0.85f)
) {
items(cartItems) { cartItems ->
CardProduct2(cartItems)
}

items(product) { product ->
CardProduct3(product)
}
}

如果您需要CardProduct2中的cartItemsproduct数据,只需创建一个对象,接受cartItemsproduct参数,并只传递一个作为您的数据

相关内容

  • 没有找到相关文章

最新更新