Kotlin 添加到livedata中包含的列表并向该列表添加元素
添加到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
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
,因此需要空列表()