我有一个数据类,比如:
data class Item(
val name: String,
val price: Int = 0
)和一个类似的ViewModel:
class MyViewModel(app: Application) : AndroidViewModel(app) {
private val _items = MutableLiveData<MutableList<Item>>()
val items: LiveData<MutableList<Item>>
get() = _items
init {
_items.value = mutableListOf()
}
fun addItem(){
_items.value?.add(Item(name="newitem", price=10))
_items.value = _items.value
}
}调用addItem()后,会将新项添加到_items和items中,并由Log.d()进行确认。但是,UI没有反映更改,我如何解决这个问题?
一种可行的方法是在_items.value = _items.value?.plus(arrayListOf(newItem))中使用MutableLiveData<List<Item>>而不是MutableLiveData<MutableList<Item>>。但是,通过这种方式,我不能更新添加项的单个属性,例如price。
发布于 2021-02-10 02:25:43
创建一个临时mutableList,在临时列表中添加新项,然后将_items更新为:_items.value = temp。通过这种方式,我们更改了mutableLiveData的引用并触发了更新
https://stackoverflow.com/questions/66115491
复制相似问题