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

时间:2017-08-16 06:57:24

标签: android performance android-databinding

我正在学习使用数据绑定库。我开始知道它不需要手动调用findViewById()并使代码更健壮和可读。

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

  1. 制作了一个temp_layout.xml,其中包含2个带有ID'tv1'和'tv2'的文本视图

  2. 以root身份添加<layout>标记

  3. 点击“构建项目”

  4. 现在我发现一个新的'TempLayoutBinding'类可用,其中包含变量'tv1'和'tv2'。

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

2 个答案:

答案 0 :(得分:3)

常规setContentView(layoutRes)的作用是在当前活动中显示您的UI,并将其扩展到添加到活动上下文的视图中,因此您可以通过膨胀布局调用findViewById和其他方法。

在数据绑定中,常规setContentView(layoutRes)被替换为DataBindingUtil.setContentView(context, layoutRes),它完成上述所有操作并创建绑定对象,它确实查找了ViewById和所有其他数据绑定相关的任务并为您提供准备好使用的绑定对象。

答案 1 :(得分:2)

DataBindingUtil.setContentView()将Activity的内容视图设置为给定的布局并返回关联的绑定。它与活动setContentView()相同。

如果您不致电DataBindingUtil.setContentView()setContentView(),则只会出现空白屏幕。