[英]Transformations.map LiveData
我有以下代码:
val liveData = MutableLiveData<String>()
liveData.value = "Ali"
val res = map(liveData) { post(it) }
textview.text = res.value.toString()
fun post(name: String): String {
return "$name $name"
}
我希望它可以打印Ali Ali
但它会打印一个空值。 我想念什么?
您缺少空检查。
res.value.toString()
想象一下,当res.value为null时,您正在这样做。
null.toString()
,其结果是字符串“ null”
另一方面,使用LiveData时,正确的方法是观察所有建议的zsmb13更改。
res.observe(this, Observer { name -> textview.text = name })
LiveData
异步工作。 您为它设置的值在转换后的LiveData
不会立即可用。 您应该observe
它的变化,而不是尝试直接读取该值,然后您将获得最新的值:
res.observe(this, Observer { name ->
textview.text = name
})
(此代码示例假定this
是LifecyleOwner
,例如AppCompatActivity
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.