【问题标题】:Can't add item in MutableList inside a LiveData Observer无法在 LiveData Observer 内的 MutableList 中添加项目
【发布时间】:2021-08-19 17:31:15
【问题描述】:

我正在尝试借助 for 循环通过 livedata ovserver 从 viwmodel 获取多个数据。

我成功地一一获取所有数据,并在 Toast 按摩中显示出来。但问题是,我无法将这些数据添加到可变列表中。

我可以通过 onCreate 方法在此列表中添加项目。但我无法从观察者内部添加任何项目。

已编辑:

private val vocabCount: MutableList<Long> = ArrayList()

override fun onCreate(savedInstanceState: Bundle?) {
     for (i in 1..5){
         folderListViewModel.getVocabCount("$i").observe(this,{it ->
              vocabCount.add(it)
         })
     }
}

每次getVocabCount("$i") 函数接受一个字符串参数并返回一个长值。我想将其添加到我的可变列表中。

【问题讨论】:

  • 我们需要查看更多代码以了解正在发生的事情以及您的期望。是foronCreate() 内循环吗?你能告诉我们你的 ViewModel 中 getVocabCount 函数的内容吗?
  • 我编辑了我的问题。 for 循环在我的 onCreate() 方法中。 getVocabCount 函数接受一个字符串参数并返回一个长值。返回过程成功完成。我得到这个值。但我无法将它们添加到我的 mutableList 中。
  • 你的意思是它返回一个LiveData&lt;Long&gt;?你不能观察 Long,只能观察 LiveData。

标签: android-studio kotlin android-livedata android-viewmodel mutablelist


【解决方案1】:

像这样使用 mutableListOf() 而不是 ArrayList()

val vocabCount: MutableList<Long> = mutableListOf()

然后用“=”代替“添加”

vocabCount = it

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多