Android Transformation 映射中的 LiveData 为空
Android LiveData in Transformation map is null
我面临 Android LiveData 和 Transformation 地图问题。我来解释一下:
我有一个 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
) 的值始终为 null
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
}
有谁知道使用 Transformation.map
计算的 LiveData 是否不保存该值,或者它可能是一个潜在的错误?
当您调用 itemsToDisplay
时,您会得到一个新的空 LiveData 实例,因为您将其声明为没有支持字段的 getter。
val itemsToDisplay: LiveData<List<DocumentData>>
= Transformations.map(documents) { documents ->
documents.filter { showOptionals || it.isMandatory }
}
https://kotlinlang.org/docs/reference/properties.html#backing-fields
我面临 Android LiveData 和 Transformation 地图问题。我来解释一下:
我有一个 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
) 的值始终为 null
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
}
有谁知道使用 Transformation.map
计算的 LiveData 是否不保存该值,或者它可能是一个潜在的错误?
当您调用 itemsToDisplay
时,您会得到一个新的空 LiveData 实例,因为您将其声明为没有支持字段的 getter。
val itemsToDisplay: LiveData<List<DocumentData>>
= Transformations.map(documents) { documents ->
documents.filter { showOptionals || it.isMandatory }
}
https://kotlinlang.org/docs/reference/properties.html#backing-fields