我想在ViewModel中的MutableLiveData List中添加一个项目。
由于使用listOf()进行初始化,所以List是只读的。
但在某些情况下,我需要添加一个项目。
为此,我使用toMutableList() 进行类型转换,但在调试的结果中,LiveData的List没有变化。
如何将数据应用到LiveData List中?
由于使用listOf()进行初始化,所以List是只读的。
但在某些情况下,我需要添加一个项目。
为此,我使用toMutableList() 进行类型转换,但在调试的结果中,LiveData的List没有变化。
如何将数据应用到LiveData List中?
class WriteRoutineViewModel : ViewModel() {
private var _items: MutableLiveData<List<RoutineModel>> = MutableLiveData(listOf())
val items: LiveData<List<RoutineModel>> = _items
fun addRoutine(workout: String) {
val item = RoutineModel(workout, "TEST")
_items.value?.toMutableList()?.add(item) // nothing change
}
}
_items.value = _items.value?.toMutableList()?.apply{ add(item) }
- 取出当前列表,创建一个新的可变列表,添加您的项目并将其分配给值。目前,您正在更改MutableLiveData
中相同的value
,这不会触发新的事件给观察者(它只是底层的观察者模式)。 - Mark_items.value?.let { _items.value = it + item }
- IR42