如何将MutableLiveData< String>转换为MutableLiveData< Int>

 val text = NonNullMutableLiveData<String>("")

我的类(class)NonNullMutableLiveData:
 class NonNullMutableLiveData<T>(private val defaultValue: T) :
        MutableLiveData<T>() {
        override fun getValue(): T {
            return super.getValue() ?: defaultValue
        }
    }

我想添加另一个MutableLiveData<Int>,在其中我已转换MutableLiveData<String>的值

谢谢

最佳答案

您应该使用Transformations.map来获取intLiveData。

val intLiveData = Transformations.map(textLiveData) {
    try {
        it.toInt()
    } catch (e: NumberFormatException) {
        0
    }
}

即使intLiveData.value已经为“2”,然后textLivaData.value仍可能为null。因为在观察到并激活intLiveData之前intLiveData不会改变。

这意味着您应该将观察者设置为intLiveData,并等待观察者启动。
intLiveData.observe(lifecycleOwner,  Observer{ intValue ->
    // get the int value.
})

正如google所说,

10-07 19:43