首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用"&&“逻辑运算符的android数据绑定

使用"&&“逻辑运算符的android数据绑定
EN

Stack Overflow用户
提问于 2016-05-11 11:54:09
回答 4查看 65.7K关注 0票数 157

我尝试在使用Android数据绑定的xml中使用and "&&“运算符,

android:visibility="@{(bean.currentSpaceId == bean.selectedSpaceId **&&** bean.currentSpaceId > 0)? View.VISIBLE: View.GONE}"

但是我得到了编译错误:

错误:执行任务':app:dataBindingProcessLayoutsDevDebug‘失败。file:/Users/path/app/build/intermediates/res/merged/dev/debug/layout/fragment_space.xml;:org.xml.sax.SAXParseException;systemId: systemId lineNumber: 106;columnNumber: 89;实体名称必须紧跟在实体引用中的'&‘后面。

和android studio中的红色高亮错误:未转义或未终止字符。

那么我该如何解决这个问题呢?

编辑:找到了答案,需要对这些字符进行转义:

'&' --> '&'

'<' --> '&lt;'

'>' --> '&gt;'
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-11 12:11:01

应将&&呈现为&amp;&amp;

官方data binding guide提供了使用这些XML实体的比较运算符示例,例如

android:visibility="@{age &lt; 13 ? View.GONE : View.VISIBLE}"

编辑

我在答案中提到的示例表达式从文档的英文版本中消失了,因为这个答案是写出来的。它们确实在一些过时的非英语版本的文档中幸存下来,比如西班牙语版本。

无论哪种方式,最初的答案仍然有效,因为在XML中使用XML实体是XML的标准,与Android本身无关。

票数 280
EN

Stack Overflow用户

发布于 2018-07-31 19:54:13

HTML实体列表

您不能在XML中使用&或其他。所以你必须使用转义字符。

android:text="@{(1==1 &amp;&amp; 2>0) ? `true` : `false`}"

Android常用的字符实体:

+--------+----------------------------+--+--+--+
| Symbol | Equivalent HTML Entity     |  |  |  |
+--------+----------------------------+--+--+--+
| >      | &gt;                       |  |  |  |
+--------+----------------------------+--+--+--+
| <      | &lt;                       |  |  |  |
+--------+----------------------------+--+--+--+
| "      | &quot;, &ldquo; or &rdquo; |  |  |  |
+--------+----------------------------+--+--+--+
| '      | &apos;, &lsquo; or &rsquo; |  |  |  |
+--------+----------------------------+--+--+--+
| }      | &#125;                     |  |  |  |
+--------+----------------------------+--+--+--+
| &      | &amp;                      |  |  |  |
+--------+----------------------------+--+--+--+
| space  | &#160;                     |  |  |  |
+--------+----------------------------+--+--+--+

是一个完整的HTML实体列表。

票数 55
EN

Stack Overflow用户

发布于 2016-09-30 18:04:15

在布局标记中转义&&是一个非常糟糕的解决方案。最好是在(视图)模型对象上创建一个方法:

android:visibility="@{user.adult ? View.VISIBLE : View.GONE}"

public boolean isAdult() {
    return age >= 18;
}
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37152824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档