首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新MutableLiveData的MutableList

更新MutableLiveData的MutableList
EN

Stack Overflow用户
提问于 2021-02-09 16:37:30
回答 1查看 421关注 0票数 0

我有一个数据类,比如:

代码语言:javascript
复制
data class Item(
    val name: String,
    val price: Int = 0
)

和一个类似的ViewModel:

代码语言:javascript
复制
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()后,会将新项添加到_itemsitems中,并由Log.d()进行确认。但是,UI没有反映更改,我如何解决这个问题?

一种可行的方法是在_items.value = _items.value?.plus(arrayListOf(newItem))中使用MutableLiveData<List<Item>>而不是MutableLiveData<MutableList<Item>>。但是,通过这种方式,我不能更新添加项的单个属性,例如price

EN

回答 1

Stack Overflow用户

发布于 2021-02-10 02:25:43

创建一个临时mutableList,在临时列表中添加新项,然后将_items更新为:_items.value = temp。通过这种方式,我们更改了mutableLiveData的引用并触发了更新

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66115491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档