【发布时间】:2021-01-21 11:49:59
【问题描述】:
我的布局中有 2 个Groups,用于控制我的视图的可见性。
但是,我无法通过 DataBinding 设置它们的可见性:
<layout>
<data>
<import type="android.view.View"/>
<variable
name="viewModel"
type="co.aresid.book13.fragments.trackinglist.TrackingListViewModel"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout>
...
<androidx.constraintlayout.widget.Group
android:id="@+id/content_group"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="@{viewModel.hideLoadingAndShowContent ? View.VISIBLE : View.GONE, default=gone}"
app:constraint_referenced_ids="tracking_list_recycler_view"
/>
<androidx.constraintlayout.widget.Group
android:id="@+id/loading_group"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="@{viewModel.hideLoadingAndShowContent ? View.GONE : View.VISIBLE, default=visible}"
app:constraint_referenced_ids="progress_circular"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
hideLoadingAndShowContent 变量是一个LiveData,它的值来自我的ViewModel 中对应的MutableLiveData:
private val _hideLoadingAndShowContent = MutableLiveData<Boolean>()
val hideLoadingAndShowContent: LiveData<Boolean>
get() = _hideLoadingAndShowContent
这个LiveData 只设置在ViewModel 中,不会出现在Fragment 类中。
在Fragment类中,我也设置了binding.lifecycleOwner:
binding.lifecycleOwner = viewLifecycleOwner
我遗漏了哪些细节?
【问题讨论】:
-
能否将代码 kotlin sn-p where inflate view 和 setviewmodel 添加到绑定
标签: android android-livedata android-databinding