【问题标题】:ViewModel backing properties [kotlin]ViewModel 支持属性 [kotlin]
【发布时间】:2019-04-02 15:58:39
【问题描述】:

查看一些 Google 演示应用程序(如 sunflower 或 Google io 2018 应用程序)的代码,我注意到对于 viemodels 的支持属性,它们使用具有自定义 getter 的相同类型的单独实例;像这样:

private val _userData: MutableLiveData<User>
val userData: LiveData<User>
    get() = _userData

但他们为什么要这样做呢?直接使_userData 可访问不是更好吗? 可能是因为虽然_userDataMutableLiveData,但他们不希望观察者能够更改值?

【问题讨论】:

    标签: android kotlin viewmodel


    【解决方案1】:

    userData 暴露给 Activity 或 Fragment 必须是不可变的,因为视图只需要观察LiveData。所以,我们需要让实际的_userData 返回一个LiveData

    一种方法是使用Kotlin coding convention 并创建两个变量_userDatauserData,一个是可变的,另一个不是:

    如果一个类有两个在概念上相同但只有一个的属性 是公共 API 的一部分,另一个是实现细节,使用 下划线作为私有属性名称的前缀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 2018-10-11
      相关资源
      最近更新 更多