繁体   English   中英

使用三元运算符查看Android MVVM数据绑定中的可见性

[英]Use ternary operator for visibility in Android MVVM databinding

我在xml文件中遇到此代码的问题,并出现错误:msg:标识符必须具有XML文件中的用户定义类型。 视图丢失了。 我想根据某些条件隐藏布局。

<include
            layout="@layout/test_ui"
            android:visibility="@{(viewModel.valueFormat==001) ? View.VISIBLE : View.GONE}"
            bind:viewModel="@{viewModel}" />

您需要导入它。

<import type="android.view.View"/>

在数据部分。 您还可以为其添加一个boolean并执行相同操作的BindingAdapter。 例如

@BindingAdapter({"visibility"})
public static void setVisibility(View view, boolean visible) {
    view.setVisibility(visible ? View.VISIBLE : View.GONE);
}

然后像这样使用它:

visibility="@{viewModel.valueFormat==001}

另一种选择是使用BindingConversion

@BindingConversion
fun convertBooleanToVisibility(visible: Boolean): Int {
   return if (visible) View.VISIBLE else View.GONE
}

然后,您可以只使用android:visbility="@{booleanVariable}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM