可见性不适用于数据绑定android

San*_*isy 5 android android-layout android-fragments android-databinding

我使用android studio 2.1在android中使用最新的数据绑定.使用可见性标记,如下面的代码所述,获取错误

java.lang.RuntimeException:发现数据绑定错误./ data binding error****msg:标识符必须具有XML文件中的用户定义类型.视图缺少文件: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}"
                        />
Run Code Online (Sandbox Code Playgroud)

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

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

wal*_*kmn 15

将此添加到您的cardview_image_twotextview.xml:

<data>
    <import type="android.view.View" />
    <!--your variables-->
</data>
Run Code Online (Sandbox Code Playgroud)


小智 11

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

<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}'/>
Run Code Online (Sandbox Code Playgroud)

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

如果要检查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}"/>
Run Code Online (Sandbox Code Playgroud)