我有一个用户列表,它显示在一个懒惰的行中。每行由一张卡片表示。每张卡片都有一个红色的边框。我如何在单击卡片时将卡片的边框从红色更改为黑色?
以下是我的尝试:
LazyRow(
modifier = Modifier.fillMaxWidth()
) {
items(users) { user ->
UserCard(
name = user.name
)
}
}
这是一张卡片:
fun UserCard(
name: String
) {
Card(
modifier = Modifier.fillMaxWidth()
border = BorderStroke(2.dp, Color.Red),
onClick = { ??? }
) {
Text(
text = name
)
}
}
2条答案
按热度按时间vuv7lop31#
如果你想有一个有状态的组合,你可以通过将颜色存储在一个带有MutableState的记忆中,并在点击时改变它。但是,当你滚动回同一个项目时,这将重置,因为当它再次出现在屏幕上时,它将被重新组合,并具有不推荐的状态。
如果你想拥有无状态的可组合,你可以通过状态提升来实现。与上面的一个不同,当新的项目将被重新组合时,即使你向下滚动并返回,这个项目也将具有相同的颜色,将使用现有的边框颜色
83qze16e2#
您可以使用类似于以下内容的内容:
如果要处理选定的状态,可以使用类似以下的语句: