如何定义数据绑定变量的泛型类型?
以下代码永远不会编译。
<data>
<variable
name="viewModel"
type="com.example.viewmodel.ViewModel<Model>"/>
</data>
答案 0 :(得分:20)
你需要转义&lt; Model&gt;如下图所示:
<data>
<variable
name="viewModel"
type="com.example.viewmodel.ViewModel<Model>"/>
</data>
Android Studio仍会显示“无法解析符号”错误,但XML会进行编译。这是一个众所周知的问题。来自Android Studio Support for Data Binding:
注意:当没有错误时,数组和泛型类型(如Observable类)可能会显示错误。
答案 1 :(得分:4)
试试这个:
<data>
<variable
name="viewModel"
type="com.example.viewmodel.ViewModel<Model>"/>
</data>
<
负责&lt; ,>
负责&gt; 。
答案 2 :(得分:1)
你有一个XML的左三角括号; XML不会那样玩。试试
var API_KEY = '737061636520696e74656e74696f6e616c6c7920626c616e6';
function queryString(map) {
return '?' +
Object.keys(map)
.map(function (key) {
return key + '=' + encodeURIComponent(map[key]);
})
.join('&');
}
function defineWord(word) {
return new Promise(function (resolve, reject) {
var request = new XMLHttpRequest();
var uri =
'http://api.wordnik.com/v4/word.json/' + encodeURIComponent(word) +
'/definitions' + queryString({
limit: 1,
includeRelated: false,
sourceDictionaries: 'all',
useCanonical: false,
includeTags: false,
api_key: API_KEY,
});
request.addEventListener('error', reject);
request.addEventListener('load', function () {
resolve(this.response);
});
request.responseType = 'json';
request.open('GET', uri, true);
request.send(null);
});
}
function define(words) {
return Promise.all(words.map(defineWord))
.then(function (results) {
var definitions = {};
results.forEach(function (result, i) {
definitions[words[i]] = result;
});
return definitions;
});
}
答案 3 :(得分:0)
您可以设置类似上面的示例:
<data>
<import type="com.example.path.Model"/>
<variable
name="obj"
type="com.example.viewmodel.ViewModel<Model>"
/>
</data>
注意:您可以在模型末尾写上> '或' >
'
为避免显示错误,请不要忘记添加行以表明使用的对象类型:
<import type="com.example.path.Model"/>