ViewModel支持属性[kotlin]

时间:2018-10-29 16:51:45

标签: android kotlin viewmodel

查看一些Google演示应用程序(例如sunflower或Google io 2018应用程序)的代码,我注意到,对于viemodels的后备属性,它们使用带有自定义getter的相同类型的单独实例;像这样: private val _userData: MutableLiveData<User>; val userData: LiveData<User> get() = _userData; 但是为什么要这么做呢?直接使_userData可以访问更好吗? 可能是因为_userDataMutableLiveData时,他们不希望观察者能够更改值吗?

1 个答案:

答案 0 :(得分:1)

暴露给活动或片段的

userData必须是不可变的,因为视图只需要观察LiveData。因此,我们需要使实际的_userData返回一个LiveData

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

  

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