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

vai*_*avS -2 performance android android-databinding

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

为了了解其用途,我做了以下工作:

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

  2. <layout>标签添加为根

  3. 点击“构建项目”

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

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

小智 5

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

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