首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MutableLiveData中添加数据到列表中?

如何在MutableLiveData中添加数据到列表中?
EN

Stack Overflow用户
提问于 2021-09-10 20:45:25
回答 1查看 556关注 0票数 1

我想向ViewModel中的MutableLiveDataList添加一个项目。

Listread-only,因为它是用listOf()初始化的。

但在特定情况下,我想添加一个项目。

为此,我对type cast使用了toMutableList(),但由于调试的结果,LiveDataList没有变化。

如何将数据应用于LiveDataList

代码语言:javascript
运行
复制
class WriteRoutineViewModel : ViewModel() {
    private var _items: MutableLiveData<List<RoutineModel>> = MutableLiveData(listOf())

    val items: LiveData<List<RoutineModel>> = _items

    fun addRoutine(workout: String) {
        val item = RoutineModel(workout, "TEST")
        _items.value?.toMutableList()?.add(item) // nothing change
    }
}
EN

Stack Overflow用户

回答已采纳

发布于 2021-09-10 22:38:17

_items.value?.toMutableList()会创建一个新的list实例,因此您不会向LiveData中的list添加元素。

即使您设法将元素添加到LiveData中的实际list对象(通过使用一些脏转换),它也可能不会在LiveData中触发更改事件,因此订阅者不会收到新值的通知。

您想要的实际上是将一个新列表分配给MutableLiveData

代码语言:javascript
运行
复制
_items.value = _items.value?.plus(item) ?: listOf(item)

(如果LiveData中的当前列表为空,则仅使用新项目分配新列表)

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69137842

复制
相关文章

相似问题

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