可见性在数据绑定android中不起作用
我正在使用android studio 2.1使用android中最新的数据绑定。 使用下面代码中描述的可见性标记将错误获取为 java.lang.RuntimeException:发现数据绑定错误。 /数据绑定错误****消息:标识符必须具有XML文件中的用户定义类型。视图缺少它 文件:D:\HP\HealthPortal\u Android\Code\app\src\main\res\layout\cardview\u image\u twotextview.xml 地点:68:90-68:93 \数据绑定错误可见性在数据绑定android中不起作用,android,android-layout,android-fragments,android-databinding,Android,Android Layout,Android Fragments,Android Databinding,我正在使用android studio 2.1使用android中最新的数据绑定。 使用下面代码中描述的可见性标记将错误获取为 java.lang.RuntimeException:发现数据绑定错误。 /数据绑定错误****消息:标识符必须具有XML文件中的用户定义类型。视图缺少它 文件:D:\HP\HealthPortal\u Android\Code\app\src\main\res\layout\cardview\u image\u twotextview.xml 地点:68:90-68:
做了一些谷歌没有阿贝尔找到的解决方案。@string/Empty_string在string.xml文件中定义为空字符串“”。我做错了什么
将此添加到您的
cardview\u image\u twotextview.xml
:
<data>
<import type="android.view.View" />
<!--your variables-->
</data>
数据元素内部可以使用零个或多个导入元素。
这些允许轻松引用布局文件中的类,只需
就像Java一样
您需要导入视图类才能使用其属性
<data>
<import type="android.view.View"/>
</data>
您也可以参考官方。要在字符串为空时隐藏视图,请在数据绑定中使用以下表达式
<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和empty,请使用以下代码:
<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}"/>
我刚刚创建了一个view类型的变量,不知道导入它很重要。谢谢你的解决方案。节省了我很多时间和糟糕的代码。
<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}"/>