UI列表不是用mutableList更新jetpack compose,而是用数据更新



为什么我的列表没有更新?昨天我花了一整天的时间调试和研究,但我找不到任何帮助。我的片段中有一个伴随对象,它最初是一个空的mutableList:

class MainTillLayoutFragment : Fragment() {
companion object {
var mBasket = mutableListOf<Product?>()
}
...
}

我有一个叫addToBasket的方法。它得到一个";产品";项作为参数,并将其添加到mBasket:

private fun addToBasket(product: Product) {
mBasket.add(product)
println("PRODUCTS ADDED NEW BASKET IS $mBasket")
}

然后我有一个可组合的函数,它在items((函数中使用mBasket循环浏览每个产品,并在lazyColumn:的每行中显示一个Text

LazyColumn(
modifier = Modifier
.background(color = Color.Red)
.fillMaxSize(),
content = {
items(mBasket) {
if (it != null) {
Text(text = it.name)
}
}
}
)

数据确实更新了,但UI没有,上面的代码有什么问题,我应该试试伙计们?

提前感谢大家:(

我找到了修复程序如果有人需要它,而不是使用mutableListOf<gt;((,请尝试使用mutableStateListOf<gt;((,它应该跟踪STATE并自动为您重新组合视图!!

在我的情况下,而不是

var mBasket = mutableListOf<Product?>()

我应该做

var mBasket = mutableStateListOf<Product?>()

最新更新