我有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
中的cartItems
和product
数据,只需创建一个对象,接受cartItems
和product
参数,并只传递一个作为您的数据