android - 使用数据绑定(bind)库时需要调用 DataBindingUtil.setContentView() 吗?

标签 android performance android-databinding

我正在学习使用数据绑定(bind)库。我知道它消除了手动调用 findViewById() 的需要,并使代码更加健壮和可读。

为了理解使用,我做了以下工作:

  • 制作了一个 temp_layout.xml,其中包含 2 个 TextView ,ID 为 'tv1' 和 'tv2'
  • 添加了<layout>标记为根
  • 点击“构建项目”

  • 现在我发现有一个新的“TempLayoutBinding”类可用,其中包含变量“tv1”和“tv2”。

    我的问题是 ,即使我已经指定了 <layout>在 temp_layout.xml 中的标签,为什么我还需要调用 mBinding = DataBindingUtil.setContentView(...) ?
    它具体有什么作用?

    最佳答案

    什么正规setContentView(layoutRes)所做的是在当前 Activity 中显示您的 UI,并将其膨胀到添加到 Activity 上下文中的 View 中,因此您可以在膨胀的布局上调用 findViewById 和其他方法。

    在数据绑定(bind)中,正则 setContentView(layoutRes)替换为 DataBindingUtil.setContentView(context, layoutRes) ,它完成了上述所有工作,并创建了绑定(bind)对象,它在后台完成了 findViewById 和所有其他与数据绑定(bind)相关的任务,并为您提供了可以使用的绑定(bind)对象。

    关于android - 使用数据绑定(bind)库时需要调用 DataBindingUtil.setContentView() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45706965/

    相关文章:

    android - 如何使用 livedata 进行数据绑定(bind)?

    android - Kotlin 。接口(interface)作为参数

    java - ScrollView 折叠嵌套相对布局问题

    c++ - std::vector<A> 与 std::vector<A*> CPU 的区别

    java - 为什么我应该使用 Java EE 服务器库而不是应用程序库?

    android - 数据绑定(bind)传递带有特殊字符的 xml 元素

    android - android studio 中不是全宽工具栏?

    java - 无法从 NetWorkInfo Android 获取状态

    python - 两种相似方法之间获取可迭代长度的时间差

    android - Kotlin 中的数据绑定(bind) + Room。如何在 Kotlin 中绑定(bind)数据类?