无法让 Jetpack Compose 重新组合
Can't make Jetpack Compose to recompose
我构建了一个惰性列,在其中的每一行上都设置了指针侦听器。我想要的是,在任何一行上长按后,接下来的点击将处于选择模式并更改该行的背景颜色。长按按预期工作,但之后的点击虽然正确接收事件并设置关联值,但似乎没有使 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) }
是什么触发了任何 Composable 读取 mutableState 值更改时的重组。您可以检查 以进行智能重组。
我构建了一个惰性列,在其中的每一行上都设置了指针侦听器。我想要的是,在任何一行上长按后,接下来的点击将处于选择模式并更改该行的背景颜色。长按按预期工作,但之后的点击虽然正确接收事件并设置关联值,但似乎没有使 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) }
是什么触发了任何 Composable 读取 mutableState 值更改时的重组。您可以检查