如何在向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 // 尝试“更新”