В ViewModel мы можем применить Encapsulation
для MutableLiveData
, как показано в Архитектура Android :
private val _dataLoading = MutableLiveData<Boolean>()
val dataLoading: LiveData<Boolean>
get() = _dataLoading
В результате dataLoading
не может быть изменено из фрагмента или действия, так как это LiveData
, а не MutableLiveData
Как насчет ObservableBoolean
, который мы можем использовать для DataBinding
в классе ViewModel, например:
val isLoading = ObservableBoolean(false)
Он не может быть приватным, поскольку мы используем его в DataBinding
:
<data>
<variable
name="vm"
type="com.sample.android.ui.DetailViewModel"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:visibleGone="@{!vm.isLoading}">
Итак, как мы можем применить Encapsulation
для ObservableBoolean
, как представлено в примере Google?