UI 列表不更新 jetpack compose with mutableList 但数据更新
UI List not updating jetpack compose with mutableList but data updates
为什么我的列表没有更新?昨天我花了一整天时间调试和研究,但找不到任何可以帮助我的东西。
我的片段中有一个伴随对象,它最初是一个空的 mutableList:
class MainTillLayoutFragment : Fragment() {
companion object {
var mBasket = mutableListOf<Product?>()
}
...
}
我有一个名为 addToBasket 的方法。它获取一个“Product”项目作为参数并将其添加到 mBasket:
private fun addToBasket(product: Product) {
mBasket.add(product)
println("PRODUCTS ADDED NEW BASKET IS $mBasket")
}
然后我有一个可组合函数,它在 items() 函数中使用 mBasket 来遍历每个产品并在 lazyColumn 的每一行中显示一个文本:
LazyColumn(
modifier = Modifier
.background(color = Color.Red)
.fillMaxSize(),
content = {
items(mBasket) {
if (it != null) {
Text(text = it.name)
}
}
}
)
数据确实得到了更新,但是 UI 没有,我应该尝试一下上面的代码有什么问题吗?
提前谢谢大家:)
我找到了修复
如果有人需要它,请尝试使用 mutableStateListOf<>() 而不是使用 mutableListOf<>(),它应该会跟踪状态并自动为您重组视图!!
在我的例子中而不是
var mBasket = mutableListOf<Product?>()
我应该做的
var mBasket = mutableStateListOf<Product?>()
为什么我的列表没有更新?昨天我花了一整天时间调试和研究,但找不到任何可以帮助我的东西。 我的片段中有一个伴随对象,它最初是一个空的 mutableList:
class MainTillLayoutFragment : Fragment() {
companion object {
var mBasket = mutableListOf<Product?>()
}
...
}
我有一个名为 addToBasket 的方法。它获取一个“Product”项目作为参数并将其添加到 mBasket:
private fun addToBasket(product: Product) {
mBasket.add(product)
println("PRODUCTS ADDED NEW BASKET IS $mBasket")
}
然后我有一个可组合函数,它在 items() 函数中使用 mBasket 来遍历每个产品并在 lazyColumn 的每一行中显示一个文本:
LazyColumn(
modifier = Modifier
.background(color = Color.Red)
.fillMaxSize(),
content = {
items(mBasket) {
if (it != null) {
Text(text = it.name)
}
}
}
)
数据确实得到了更新,但是 UI 没有,我应该尝试一下上面的代码有什么问题吗?
提前谢谢大家:)
我找到了修复 如果有人需要它,请尝试使用 mutableStateListOf<>() 而不是使用 mutableListOf<>(),它应该会跟踪状态并自动为您重组视图!!
在我的例子中而不是
var mBasket = mutableListOf<Product?>()
我应该做的
var mBasket = mutableStateListOf<Product?>()