繁体   English   中英

Transformations.map LiveData

[英]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
})

(此代码示例假定thisLifecyleOwner ,例如AppCompatActivity 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM