可见性在数据绑定中不起作用 android

Visibility not working in data binding android

我正在使用 android 使用 android studio 2.1 中的最新数据绑定。 使用下面代码中描述的可见性标签得到错误

java.lang.RuntimeException: Found data binding errors. / data binding error ****msg:Identifiers must have user defined types from the XML file. View is missing it file:D:\HP\HealthPortal_Android\Code\app\src\main\res\layout\cardview_image_twotextview.xml loc:68:90 - 68:93 \ data binding error

   <TextView
                        android:id="@+id/card_sub_title"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/card_title"
                        android:layout_marginLeft="@dimen/carview_margin"
                        android:layout_toRightOf="@+id/card_image"
                        android:text="@{toolsAndTrackersCards.subtitle}"
                        android:textColor="@color/black"
                        android:textSize="20sp"
                        android:visibility="@{toolsAndTrackersCards.subtitle.equals(@string/Empty_String) ?  View.VISIBLE : View.GONE}"
                        />

做了一些 google 找不到解决方案。 @string/Empty_String 在 string.xml 文件中定义为空字符串 ""。我哪里做错了。

Android data binding, Radio Button not updating

将此添加到您的 cardview_image_twotextview.xml:

<data>
    <import type="android.view.View" />
    <!--your variables-->
</data>

Zero or more import elements may be used inside the data element. These allow easy reference to classes inside your layout file, just like in Java.

您需要导入视图 class 才能使用其属性。

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

也可以参考官方DataBinding guideline.

要在字符串为 时隐藏视图,请在数据绑定中使用以下表达式

<data>
    <import type="android.view.View"/>
    <variable
        name="item"
        type="com.test.model.Item" />
</data>


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{item.title}"
    android:visibility='@{item.title.equals("") ? View.GONE : View.VISIBLE}'/>

注意:需要使用外部单引号字符串才能使用双引号 代表空串

如果要检查 nullempty,请使用以下代码:

<data>
    <import type="android.view.View"/>
    <import type="android.text.TextUtils"/>
    <variable
        name="item"
        type="com.test.model.Item" />
</data>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{item.title}"
    android:visibility="@{TextUtils.isEmpty(item.title) ? View.GONE : View.VISIBLE}"/>