转换后获取 LiveData 对象的更好方法是什么?

What is the better way to get LiveData object after Transformation?

我目前正在上 Developing Android Apps with Kotlin 课程,有一项任务是将 LiveData 对象(CountDownTimer 的 Long 类型)从观察者移动到 xml 文件。但它必须从Long转换成String。

所以给出的代码是:

private val _time = MutableLiveData<Long>()
val time: LiveData<Long>
    get() = _time

val timeString = Transformations.map(time) { time ->
    DateUtils.formatElapsedTime(time)
}

但是用getter代替不是更好吗:

private val _time = MutableLiveData<Long>()
val time: LiveData<String>
    get() = Transformations.map(_time) { time ->
        DateUtils.formatElapsedTime(time)
    }

有什么理由不使用 getter,我是不是漏掉了什么?

第一个解决方案背后的想法是保持 time 变量不变,因为您以后可能想将它用于其他用途。例如,除了打印时间之外,您可能还想用它进行某种计算 - 在这种情况下,最好保持原样。

作为一般规则,您不想直接修改需要在 UI 中打印或显示的数据 - 最好在显示时直接进行转换(如果只是在中显示)代码中的一个位置),或者创建一个单独的 UI 变量来进行转换。