添加到包含在 livedata 中的列表并将元素添加到该列表
adding to a list that is contained in livedata and adding elements to that list
添加到包含在 livedata 中的列表并向该列表添加元素
val resourcesLiveData by lazy { MutableLiveData<List<File>>() }
我认为这应该可行,因为我的 LiveData 是一个文件列表,我只想向其中添加元素。但是实时数据的值始终是一个空列表。 res
是我要添加的不同文件资源
resourceLiveData.value?.toMutableList()?.add(res)
所以我使用这个版本尝试了更多,但列表仍然是空的
val listOfRes = resourceLiveData.value ?: emptyList()
listOfRes.toMutableList().add(res)
resourceLiveData.value = listOfRes.toList()
谁能看看我做错了什么。
只想添加到 value
中包含的列表
您正在通过调用 toMutableList()
而不是更新原始对象来创建新对象。
将您的 LiveData
类型更改为 MutableList
:
val resourcesLiveData by lazy { MutableLiveData<MutableList<File>>() }
然后,相应地更新值:
resourceLiveData.value?.add(res)
同意@KeyserSoze 的回答,如果你只需要使用 List
那么你可以按照下面的方法做
resourceLiveData.value = resourceLiveData.value?.toMutableList()?.apply { add(res) }?: emptyList()
添加到包含在 livedata 中的列表并向该列表添加元素
val resourcesLiveData by lazy { MutableLiveData<List<File>>() }
我认为这应该可行,因为我的 LiveData 是一个文件列表,我只想向其中添加元素。但是实时数据的值始终是一个空列表。 res
是我要添加的不同文件资源
resourceLiveData.value?.toMutableList()?.add(res)
所以我使用这个版本尝试了更多,但列表仍然是空的
val listOfRes = resourceLiveData.value ?: emptyList()
listOfRes.toMutableList().add(res)
resourceLiveData.value = listOfRes.toList()
谁能看看我做错了什么。
只想添加到 value
您正在通过调用 toMutableList()
而不是更新原始对象来创建新对象。
将您的 LiveData
类型更改为 MutableList
:
val resourcesLiveData by lazy { MutableLiveData<MutableList<File>>() }
然后,相应地更新值:
resourceLiveData.value?.add(res)
同意@KeyserSoze 的回答,如果你只需要使用 List
那么你可以按照下面的方法做
resourceLiveData.value = resourceLiveData.value?.toMutableList()?.apply { add(res) }?: emptyList()