Android DataBinding 泛型

如何DataBinding使用泛型

直接在xml里面写泛型会报如下错误:

Error:与元素类型 "variable" 相关联的 "type" 属性值不能包含 '<' 字符。
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: 与元素类型 "variable" 相关联的 "type" 属性值不能包含 '<' 字符。

错误的写法:

<variable
    name="list"
    type="java.util.List<String>" />

正确的写法:

<variable
    name="list"
    type="java.util.List&lt;String&gt;" />

原因:

<>在xml中属于特殊字符,需要转义才可以使用。如果直接使用编译器会认为这是xml标签,而无法正确识别泛型。
&lt;&gt;是中的转义字符,分别对应<>。也就是说:

  • &lt;替代<
  • &gt;替代>

其他例子:

  • 单个泛型:
    java.util.ArrayList<String> 写成 java.util.ArrayList&lt;String&gt;

    <variable
        name="list" 
        type="java.util.List&lt;String&gt;" />
  • 多个泛型:
    java.util.Map<String,String> 写成 java.util.Map&lt;String,String&gt;

    <variable
        name="map"
        type="java.util.Map&lt;String,String&gt;" />
  • 泛型泛型:
    java.util.Map<String,User<UserInfo>> 写成 java.util.Map&lt;String,User&lt;UserInfo&gt; &gt;

    <data>
        <import type="com.dome.scdome.User" />
        <import type="com.dome.scdome.UserInfo" />
        <variable
            name="map"
            type="java.util.Map&lt;String,User&lt;UserInfo&gt;&gt;" />
    </data>

注意:

&lt;&gt;中间不能使用全包名,而是要顶部导包。比如最后一个例子。

参考:

htm转义字符的参考连接:https://blog.csdn.net/wusuopubupt/article/details/8817826

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值