android - 如何通过 DataBinding 设置 ConstraintLayout Group 的可见性?
问题描述
我的布局中有 2Group
秒来控制我的视图的可见性。
但是,我无法通过 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
变量是 a ,它从my 中对应的aLiveData
获取其值:MutableLiveData
ViewModel
private val _hideLoadingAndShowContent = MutableLiveData<Boolean>()
val hideLoadingAndShowContent: LiveData<Boolean>
get() = _hideLoadingAndShowContent
这LiveData
仅在类中设置,ViewModel
不会出现在Fragment
类中。
在Fragment
课堂上,我还设置了binding.lifecycleOwner
:
binding.lifecycleOwner = viewLifecycleOwner
我错过了什么细节?
解决方案
我忘了在我的班级中传递ViewModel
给布局绑定:Fragment
binding.viewModel = viewModel
推荐阅读
- eclipse - 如何在 Eclipse for PHP 中禁用计算进程?
- arcgis - ArcGIS 标注折线的两端
- shell - 如何在备份中使用 pv 命令
- javascript - while 循环不适用于 == 运算符
- jquery - 创建函数 jquery 检查输入值
- javascript - Jquery在单击时将自动对焦添加到字段
- javascript - 使用 SheetJS 将 JSON 对象数组导出到 Excel
- python - 基于 Python SNS Barplot 中分类变量的颜色
- maxscript - MaxScript如何捕获当前旋转
- pandas - 从类中返回数据框而不是字符串