【问题标题】:Visibility not working in data binding android可见性在数据绑定android中不起作用
【发布时间】:2016-04-29 12:35:34
【问题描述】:

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

java.lang.RuntimeException:发现数据绑定错误。 / 数据绑定错误****msg:标识符必须具有来自 XML 文件的用户定义类型。视图不见了 文件:D:\HP\HealthPortal_Android\Code\app\src\main\res\layout\cardview_image_twotextview.xml 地点:68:90 - 68:93 \数据绑定错误

   <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 data binding, Radio Button not updating

【问题讨论】:

    标签: android android-layout android-fragments android-databinding


    【解决方案1】:

    将此添加到您的cardview_image_twotextview.xml

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

    【讨论】:

    • 我只是在做一个视图类型的变量,并不知道导入它很重要。感谢您的解决方案。为我节省了大量时间和糟糕的代码。
    【解决方案2】:

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

    <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}"/>
    

    【讨论】:

      【解决方案3】:

      可以在数据元素中使用零个或多个导入元素。 这些允许轻松引用布局文件中的类,只是 就像在 Java 中一样。

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

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

      也可以参考官方DataBinding guideline

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 2019-01-24
        • 2010-10-04
        • 2017-11-09
        • 2014-03-19
        • 2013-03-26
        相关资源
        最近更新 更多