gpt4 book ai didi

android - 撰写 LazyColumn 选择一项

转载 作者:行者123 更新时间:2023-12-04 23:41:23 29 4
gpt4 key购买 nike

我想选择我的 LazyColumn 中的一项并更改文本颜色。
如何识别选择了哪个项目?
代码:

val items = listOf(Pair("A", 1), Pair("AA", 144), Pair("BA", 99))
var selectedItem by mutableStateOf(items[0])
LazyColumn {
this.items(items = items) {
Row(modifier = Modifier.clickable(onClick = {selectedItem = it}) {
if (selectedItem == it) {
Text(it.first, color = Color.Red)
} else {
Text(it.first)
}
}
}
}
根据我保存它的方式(记住或不记住),如果我单击一个,它们只会突出显示两者,而不仅仅是我最后单击的那个。

最佳答案

您可以使用 .selectable 修饰符而不是 .clickable就像是:

data class Message(val id: Int,
val message : String)
val messages : List<Message> = listOf(...))

val listState = rememberLazyListState()
var selectedIndex by remember{mutableStateOf(-1)}

LazyColumn(state = listState) {
items(items = messages) { message ->

Text(
text = message.message,
modifier = Modifier
.fillMaxWidth()
.background(
if (message.id == selectedIndex)
Color.Red else Color.Yellow
)
.selectable(
selected = message.id == selectedIndex,
onClick = { if (selectedIndex != message.id)
selectedIndex = message.id else selectedIndex = -1})
)
}
}
在您的情况下,您可以使用:
var selectedItem by remember{mutableStateOf( "")}
LazyColumn {
this.items(items = items) {
Row(modifier = Modifier.selectable(
selected = selectedItem == it.first,
onClick = { selectedItem = it.first}
)
) {
if (selectedItem == it.first) {
Text(it.first, color = Color.Red)
} else {
Text(it.first)
}
}
}
}

关于android - 撰写 LazyColumn 选择一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66793855/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com