Я бы сделал следующие изменения: Здесь
<variable
name="isLoaded"
type="boolean" />
Вместо передачи boolean
я бы передал экземпляр вашей виртуальной машины
<variable
name="vm"
type="com.sample.android.tmdb.ui.MovieViewModel" />
в вашем фрагменте, вы делаете
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false)
mBinding?.setVariable(BR.vm, mViewModel)
mBinding?.setLifecycleOwner(this)
Таким образом, ваша ВМ связана с жизненным циклом вашего фрагмента.
Объявить метод
@BindingAdapter("visibleGone")
fun View.visibleGone(visible: Boolean) {
setVisibility(if (visible) View.VISIBLE else View.GONE)
}
объявите переменную LiveData<Boolean>
в вас MovieViewModel
и подключите ее в свой макет. Например.
val loading: LiveData<Boolean>
тогда в вашем макете вы можете иметь
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:visibleGone="@{!safeUnbox(vm.loading)}" />