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

Visibility not working in data binding android

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

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\
es\\layout\\cardview_image_twotextview.xml
loc:68:90 - 68:93
\\ data binding error

1
2
3
4
5
6
7
8
9
10
11
12
   <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}"
                        />

做了一些谷歌而不是 abel 来找到解决方案。 @string/Empty_String 在 string.xml 文件中定义为空字符串 "。我做错了。

Android 数据绑定,单选按钮未更新


将此添加到您的 cardview_image_twotextview.xml:

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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
<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}'/>

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

如果要检查 null 和空,请使用以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
<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}"/>

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.

您需要导入 View 类才能使用它的属性。

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

你也可以参考官方的DataBinding指南。