我目前正在拿一个 用Kotlin开发Android应用 当然,还有一个任务是把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变量来进行转换。