[英]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.