簡體   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