Transformation后获得LiveData对象有什么比较好的方法?

问题描述 投票:0回答:1

我目前正在拿一个 用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吗,我是不是漏掉了什么?

android android-livedata
1个回答
1
投票

第一种解决方案背后的想法是保持 time 变量保持不变,因为以后你可能会想用它来做其他事情。例如,除了打印时间之外,也许你还想用它做某种计算--在这种情况下,最好保持它的原样。

一般来说,你不希望直接修改你需要打印或在UI中显示的数据--最好是在显示时直接进行转换(如果只是在代码中的一个地方显示),或者创建一个单独的UI变量来进行转换。

© www.soinside.com 2019 - 2024. All rights reserved.