Avatar ·

如何在向LiveData列表添加元素时通知观察者?

你好!我是Kotlin Android开发的新手,正在尝试理解MVVM架构。我有一个ViewModel,它存储了一个元素列表(例如任务)在LiveData>中。我希望当向这个列表添加新元素时,所有订阅的观察者(例如Activity或Fragment)都能收到通知并更新UI。 问题在于LiveData不会跟踪列表内部的更改。如果我仅仅执行myList.add(newTask),观察者不会触发,因为列表对象的引用保持不变。我尝试在添加后调用postValue()和setValue(),但这没有帮助。 以下是我的代码示例: ```kotlin class TaskViewModel : ViewModel() { private val _tasks = MutableLiveData>(mutableListOf()) val tasks: LiveData> get() = _tasks fun addTask(task: Task) { _tasks.value?.toMutableList()?.add(task) // 添加到副本 _tasks.value = _tasks.value // 尝试“更新”