【发布时间】:2020-11-17 15:32:12
【问题描述】:
我正面临 Android LiveData 和转换地图的问题。我来解释一下这个案子:
我有一个 SingleLiveEvent 和 LiveData 如下(一个用于所有项目,另一个用于显示在屏幕上的项目):
val documents: SingleLiveEvent<List<DocumentData>> = SingleLiveEvent()
val itemsToDisplay: LiveData<List<DocumentData>>
get() {
return Transformations.map(documents) { documents ->
return@map documents.filter { showOptionals || it.isMandatory }
}
}
在 Fragment 中,观察itemsToDisplay 后,如果我试图获取itemsToDisplay LiveData (itemsToDisplay.value) 的值始终为空
itemsToDisplay.observe(this, Observer {
// Inside this method I need to get a calculated property from VM which uses
```itemsToDisplay.value``` and I would like to reuse across the app
loadData(it)
})
// View Model
val hasDocWithSign: Boolean
get() {
return **itemsToDisplay.value**?.any { it.isSignable } ?: false
}
如果 LiveData 使用Transformation.map 计算,是否有人知道它是否不包含该值,或者它可能是一个潜在的错误?
【问题讨论】:
标签: android kotlin android-livedata android-livedata-transformations