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?>()