【问题标题】:Data binding generic variable数据绑定通用变量
【发布时间】:2016-09-07 19:37:58
【问题描述】:

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

以下代码永远不会编译。

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

【问题讨论】:

  • 关注Guide
  • @MurtazaKhursheedHussain 谢谢,但没有关于定义泛型变量类型的说法。
  • 什么是型号?我的意思是这是 ViewModel 的类型?
  • @DexSebas 不,它是 ViewModel 类型的通用参数

标签: android generics android-databinding


【解决方案1】:

你可以设置类似上面的例子:

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

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

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

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

【讨论】:

    【解决方案2】:

    试试这个:

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

    &amp;lt;负责&amp;gt;负责>

    【讨论】:

    • 它接受任何类型的吗?类似于:com.example.viewmodel.ViewModel
    • 是的,确实如此。您可以传递自己的对象。
    • 我试过了,但是对于泛型类型它不能编译。
    【解决方案3】:

    您需要将 转义,如下所示:

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

    Android Studio 仍会显示“无法解析符号”错误,但 XML 会编译。这是一个已知问题。来自Android Studio Support for Data Binding

    注意:数组和泛型类型,例如 Observable 类,在没有错误时可能会显示错误。

    【讨论】:

    • 我收到此异常 android.databinding.tool.util.LoggedErrorException:发现数据绑定错误。 ****/ 数据绑定错误 ****msg:cannot find type element for com.example.viewmodel.ViewModel
    • 我有工具栏,我打算为它创建通用列表器,并希望显示它以将其包含在所有活动中
    • 如果我想接受任何类型怎么办:com.example.viewmodel.ViewModel etc
    【解决方案4】:

    XML 中有一个左三角括号; XML 不是那样玩的。试试

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2018-08-15
      • 2019-08-02
      相关资源
      最近更新 更多