如何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<String>" />
原因:
<>
在xml中属于特殊字符,需要转义才可以使用。如果直接使用编译器会认为这是xml标签,而无法正确识别泛型。
而<
和>
是中的转义字符,分别对应<
和>
。也就是说:
- 用
<
替代<
- 用
>
替代>
其他例子:
单个泛型:
java.util.ArrayList<String> 写成 java.util.ArrayList<
String>
<variable name="list" type="java.util.List<String>" />
多个泛型:
java.util.Map<String,String> 写成 java.util.Map<
String,
String>
;<variable name="map" type="java.util.Map<String,String>" />
泛型泛型:
java.util.Map<String,User<UserInfo>> 写成 java.util.Map<
String,User<
UserInfo>
>
<data> <import type="com.dome.scdome.User" /> <import type="com.dome.scdome.UserInfo" /> <variable name="map" type="java.util.Map<String,User<UserInfo>>" /> </data>
注意:
在<
和>
中间不能使用全包名,而是要顶部导包。比如最后一个例子。
参考:
htm转义字符的参考连接:https://blog.csdn.net/wusuopubupt/article/details/8817826