首页 > 解决方案 >

问题描述

标签: kotlin

解决方案


您可以通过两种方式在 MutableLiveDataObject 上设置值(取决于您在做什么)。

可以通过以下方式从 UI 线程正常设置值:

myLiveData.value = myobject

如果您从后台线程设置它,就像您可能在具有挂起函数或异步任务等的协程中一样,请使用:

myLiveData.postValue(myObject)

从您的问题中不清楚 LiveData 是否意味着在您提到列表和单个值时保存一个列表。但是您的 LiveData 将一组值保存为一个集合,如列表、集合或地图。它可以被视为一个完整的对象,因此稍后添加一个值需要再次设置整个集合,例如:

myLiveData.value = mutableListOf<Url>()

//Response received and object created
myLiveData.value = myLiveData.value.apply {
   add(myObject)
}

或者,如果该值是可变的,则更新现有值(首选,因为它更干净):

myLiveData.value.add(myObject)

这种方法的问题是您将地图公开为可变/可写对象。允许访问者更改您可能不想要的值。


推荐阅读