Kotlin,Android-如何將MutableLiveData<MutableList<something>>轉(zhuǎn)換為L(zhǎng)iveData<List<something>>

在ViewModel中我有MutableLiveData<MutableList<object>>,我想創(chuàng)建LiveData<List<object>>,但是我不知道如何從MutableList創(chuàng)建List

我想做的是:

class AppViewModel : ViewModel() {

    private val _tasks = MutableLiveData<MutableList<Task>>(mutableListOf())
    val tasks: LiveData<List<Task>> = _tasks
}

(但我發(fā)現(xiàn)錯(cuò)誤類型不匹配。必需:LiveData<List>找到:MutableLiveData<MutableList>)

當(dāng)我將val tasks: LiveData<List<Task>> = _tasks更改為val tasks: LiveData<MutableList<Task>> = _tasks時(shí),它可以工作,但我希望任務(wù)中的List不可編輯。

? 最佳回答:

LiveData是用Java定義的,其中沒有declaration-site變量。(如果它是在Kotlin中定義的,他們可能會(huì)使類型協(xié)變out以避免這個(gè)problem.)為了繞過(guò)它,可以使用use-site方差使它協(xié)變:

val tasks: LiveData<out List<Task>> = _tasks

協(xié)變意味著您不能從這個(gè)引用修改它的內(nèi)容,這在read-onlyLiveData中已經(jīng)是正確的了。這只是讓編譯器知道。將其標(biāo)記為協(xié)變?cè)试SMutableList類型的up-casting轉(zhuǎn)換為L(zhǎng)ist類型。

主站蜘蛛池模板: 亚洲美女高清一区二区三区| 久久成人国产精品一区二区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 精品国产一区二区三区色欲| 老湿机一区午夜精品免费福利| 亚洲av成人一区二区三区 | 一区二区三区免费电影| 亚洲AV无码片一区二区三区| 夜色福利一区二区三区| 中文字幕日韩人妻不卡一区 | 亚洲熟女www一区二区三区| 久久精品道一区二区三区| 中文字幕在线观看一区| 免费无码一区二区| 国产一区二区三区在线| 久久一区二区三区精华液使用方法| 日韩精品一区二区三区中文 | 韩国资源视频一区二区三区| 精品午夜福利无人区乱码一区| 农村乱人伦一区二区| 色婷婷一区二区三区四区成人网| 久久精品一区二区三区日韩| 无码一区二区三区老色鬼| 无码人妻精品一区二区三区99仓本| 日韩人妻无码一区二区三区| 国产麻豆精品一区二区三区v视界| 中文字幕日韩人妻不卡一区| 国产乱码精品一区二区三区中文 | 日韩人妻精品一区二区三区视频| 国产成人无码精品一区二区三区| 国产一区二区内射最近更新| 久久精品国产一区| 亚洲乱码一区二区三区国产精品 | 日本一区中文字幕日本一二三区视频| 精品无码国产一区二区三区51安 | 日韩精品乱码AV一区二区| 亚洲国产精品综合一区在线| 五十路熟女人妻一区二区| 国产精品资源一区二区| 精品少妇一区二区三区在线 | 熟妇人妻系列av无码一区二区|