【发布时间】:2020-07-17 11:01:38
【问题描述】:
在下面的示例中,我想像这样公开一个 Int 列表:
val test: LiveData<List<Int>>
get() = _test as LiveData<List<Int>>
private var _test = MutableLiveData(mutableListOf<Int>())
或者换一种说法:
private var _test2 = MutableLiveData(mutableListOf<Int>())
val test2 = _test2 as LiveData<List<Int>>
两者都在工作,但总是有未经检查的演员表。
Unchecked cast: MutableLiveData<MutableList<Int>!> to LiveData<List<Int>>
有更好的方法吗?
澄清一下:
通过使用emptyList,用法可能如下所示:
class MainViewModel : ViewModel() {
val test: LiveData<List<Int>> get() = _test
private var _test = MutableLiveData(emptyList<Int>())
init {
val myPrivateList = mutableListOf<Int>()
myPrivateList.add(10)
myPrivateList.add(20)
_test.value = myPrivateList
}
}
我希望找到一种无需额外列表 (myPrivateList) 的方法,如下所示:
class MainViewModel : ViewModel() {
val test: LiveData<List<Int>> get() = _test
private var _test = MutableLiveData(emptyList<Int>())
init {
_test.value?.apply {
add(1)
add(2)
add(3)
}
}
}
【问题讨论】:
标签: android kotlin mvvm android-livedata mutablelivedata