我构造了一个惰性列,在每一行上我都设置了指针侦听器。 我想要的是,在长按任何行后,以下点击将处于选择模式并更改该行的背景颜色。 长按预期工作,但之后的单击虽然正确接收事件并设置关联值,但似乎不会使 UI 刷新(或重构),因此未设置背景颜色。 有什么想法吗?
var selectedIndex by remember { mutableStateOf(-1) }
LazyColumn {
itemsIndexed(lazyPagingItems) { index, row ->
Row(
modifier = Modifier
.fillMaxWidth()
.pointerInput(Unit) {
detectTapGestures(
onLongPress = {
onLongClickAction(row, index)
selectedIndex++
},
onTap = {
println("clicked $index $selectMode")
if (!selectMode) {
println("$index " + colorSelected(index))
} else {
selectMap[index] = row
}
selectedIndex++
println("$index " + colorSelected(index))
}
)
}
.background(colorResource(colorSelected(index))),
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(
text = index.toString(),
modifier = Modifier.padding(end = 2.dp)
)
}
}
}
您没有在代码中的任何位置读取var selectedIndex by remember { mutableStateOf(-1) }
什么触发了任何可组合的重构,读取了可变状态值更改。您可以在此处查看智能重组。