数据绑定通用变量

Data binding generic variable

如何定义数据绑定变量的泛型类型?

以下代码无法编译。

<data>
    <variable
        name="viewModel"
        type="com.example.viewmodel.ViewModel<Model>"/>
</data>

你在XML中有一个左三角括号; XML 别这么玩。尝试

<data>
    <variable
        name="viewModel"
        type="com.example.viewmodel.ViewModel&lt;Model>"/>
</data>

您需要对 进行转义,如下所示:

<data>
    <variable
        name="viewModel"
        type="com.example.viewmodel.ViewModel&lt;Model>"/>
</data>

Android Studio 仍会显示 "Cannot resolve symbol" 错误,但 XML 会编译。这是一个已知问题。来自 Android Studio Support for Data Binding:

Note: Arrays and generic types, such as the Observable class, might display errors when there are no errors.

试试这个:

<data>
<variable
    name="viewModel"
    type="com.example.viewmodel.ViewModel&lt;Model&gt;"/>
</data>

&lt;负责<&gt;负责>.

您可以像上面的例子那样设置:

<data>
    <import type="com.example.path.Model"/>
    <variable
        name="obj"
        type="com.example.viewmodel.ViewModel&lt;Model&gt;"
        />
</data>

注意:你可以在模型末尾写'>'或'&gt;'应该没问题

为避免错误显示,请不要忘记添加行以说明使用的对象类型:

<import type="com.example.path.Model"/>