Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 添加到livedata中包含的列表并向该列表添加元素_Kotlin_Android Livedata - Fatal编程技术网

Kotlin 添加到livedata中包含的列表并向该列表添加元素

Kotlin 添加到livedata中包含的列表并向该列表添加元素,kotlin,android-livedata,Kotlin,Android Livedata,添加到livedata中包含的列表并向该列表添加元素 val resourcesLiveData by lazy { MutableLiveData<List<File>>() } 因此,我使用这个版本尝试了更明确的方法,但列表仍然是空的 val listOfRes = resourceLiveData.value ?: emptyList() listOfRes.toMutableList().add(res) resourceLiveData.value

添加到livedata中包含的列表并向该列表添加元素

val resourcesLiveData by lazy { MutableLiveData<List<File>>() }
    
因此,我使用这个版本尝试了更明确的方法,但列表仍然是空的

val listOfRes = resourceLiveData.value ?: emptyList()
listOfRes.toMutableList().add(res)
resourceLiveData.value = listOfRes.toList()
                
有人能看出我是否做错了什么吗


只需将添加到包含在
值中的列表中,即可通过调用
toMutableList()
而不是更新原始对象来创建新对象

将您的
LiveData
类型更改为
MutableList

val resourcesLiveData by lazy{MutableLiveData()}
然后,相应地更新该值:

resourceLiveData.value?.add(res)

您正在通过调用
toMutableList()
而不是更新原始对象来创建新对象

将您的
LiveData
类型更改为
MutableList

val resourcesLiveData by lazy{MutableLiveData()}
然后,相应地更新该值:

resourceLiveData.value?.add(res)

同意@KeyserSoze回答,如果您只需要使用
列表
,则可以执行以下操作

resourceLiveData.value = resourceLiveData.value?.toMutableList()?.apply { add(res) }?: emptyList()

同意@KeyserSoze回答,如果您只需要使用
列表
,则可以执行以下操作

resourceLiveData.value = resourceLiveData.value?.toMutableList()?.apply { add(res) }?: emptyList()

listOfRes.toMutableList()
将为您提供一个新对象
listOfRes.toMutableList()
将为您提供一个新对象我们为什么需要
?:emptyList()
。在我看来,只有当
.apply{add(res)}
为空时,emptyList才会返回。我说的对吗?不,它将是
null
?。
返回
null
如果前面的语句是
null
,那么就需要空列表()为什么我们需要
?:空列表()
。在我看来,只有当
.apply{add(res)}
为空时,emptyList才会返回。我说的对吗?不,它将是
null
?。
如果前面的语句是
null
,则返回
null
,因此需要空列表()