【发布时间】:2021-09-28 02:30:40
【问题描述】:
我已经通过this codelab。在第 7 步中,当单击单行文本时,它会改变它的颜色,但函数不会跟踪它,这意味着它会在重新组合后消失。
我希望列表记住单个项目的颜色,因此我将状态提升移至 NameList 函数级别。 不幸的是,它不起作用。
错误在哪里?
@Composable
fun NameList(names: List<String>, modifier: Modifier = Modifier) {
LazyColumn(modifier = modifier) {
items(items = names) { name, ->
val isSelected = remember { mutableStateOf(false)}
Greeting(name = name,isSelected.value){ newSelected -> isSelected.value = newSelected}
Divider(color = Color.Black)
}
}
}
@Composable
fun Greeting(name: String,isSelected : Boolean, updateSelected : (Boolean) -> Unit) {
val backgroundColor by animateColorAsState(if (isSelected) Color.Red else Color.Transparent)
Text(
modifier = Modifier
.padding(24.dp)
.background(color = backgroundColor)
.clickable(onClick = { updateSelected(!isSelected)}),
text = "Hello $name",
)
}
【问题讨论】:
标签: android kotlin state android-jetpack android-jetpack-compose