UI 列表不更新 jetpack 与 mutableList 组合,但数据更新

Ano*_*ous 9 android kotlin android-livedata android-jetpack-compose

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

class MainTillLayoutFragment : Fragment() {
    companion object {
        var mBasket = mutableListOf<Product?>()
    }
...
}
Run Code Online (Sandbox Code Playgroud)

我有一个名为 addToBasket 的方法。它获取“Product”项作为参数并将其添加到 mBasket:

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

然后我有一个可组合函数,它在 items() 函数中使用 mBasket 来循环遍历每个产品,并在lazyColumn 的每一行中显示一个文本:

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

数据确实更新了,但是用户界面没有更新,上面的代码有什么问题吗?我应该尝试一下吗?

预先感谢大家:)

Ano*_*ous 20

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

就我而言而不是

    var mBasket = mutableListOf<Product?>()
Run Code Online (Sandbox Code Playgroud)

我应该做的

    var mBasket = mutableStateListOf<Product?>()
Run Code Online (Sandbox Code Playgroud)