列表项更新时不触发Livedata

问题描述 投票:0回答:1

我对LiveData有一个非常简单的问题。我有一个MutableLiveData<MutableList<Car>>,我想更新列表中的特定字段,所以我猜想当该字段更新时,MutableLiveData应该触发观察者,但是不会发生。

因此,如果我使用此行代码,则不会触发观察者。

var carList = MutableLiveData<MutableList<Car>>()
...
carList.value?.set(car.id,Car(car.id, color)) 

但是如果我这样做,就会触发观察者。

var carList = MutableLiveData<MutableList<Car>>()
...
var newList = carList.value
carList?.set(car.id,Car(car.id, color))
carList.value = newList 

可以请人解释为什么会这样吗?给要触发的实时数据提供一个全新的列表是否必不可少,或者我缺少某些东西?预先谢谢你。

kotlin android-livedata observers mutablelivedata mutablelist
1个回答
0
投票
MutableLiveData

然后从fun <T> MutableLiveData<MutableList<T>>.addNewItem(item: T) { val oldValue = this.value ?: mutableListOf() oldValue.add(item) this.value = oldValue } fun <T> MutableLiveData<MutableList<T>>.addNewItemAt(index: Int, item: T) { val oldValue = this.value ?: mutableListOf() oldValue.add(index, item) this.value = oldValue } fun <T> MutableLiveData<MutableList<T>>.removeItemAt(index: Int) { if (!this.value.isNullOrEmpty()) { val oldValue = this.value oldValue?.removeAt(index) this.value = oldValue } else { this.value = mutableListOf() } } 添加/删除项目,例如:

MutableLiveData
© www.soinside.com 2019 - 2024. All rights reserved.