Android DataBinding

2018-03-01

前言

Data binding 已经不是什么新技术了. 这是一个大趋势, 能让我们少写不少代码, 同时代码更加美观.

配置

Data Binding 默认不启用, 需要配置:

android {
    ....
    dataBinding {
        enabled = true
    }
}

Data Binding Compiler V2

Android Gradle Plugin 3.1.0 Canary 6 添加了一个可选的新编译器, 叫 Data Binding Compiler V2.

启用方式, 在 gradle.properties 中添加一行:

android.databinding.enableV2=true

整体

在深入细节之前, 有必要从整体上来看下, Data Binding 是怎么回事:

图中, View Container 是视图容器, 可以是 Activity 或者 ViewGroup, 可以理解为屏幕上的一个部分.

我们要做的是在这个容器中填充一个视图, 同时为这个视图绑定数据.

这种事情在开发中在平常不过了, 使用传统的方法, 需要以下步骤:

  1. inflate layout
  2. findViewById
  3. 向视图中绑定数据

这当中涉及到大量的胶水代码. 而使用 Data Binding 就能够省掉这些胶水代码.

回到图中, Android 的 Data Binding 是在布局中设定数据 Model 和事件响应 Handler 的.

Model 是一个 POJO, 是需要被绑定到视图上面的数据.

Handler 是一个我们定义的类, 它提供一系列方法, 布局中就能直接调用这些方法.

DataBindingUtil 处于中心位置, 将 MVVM 的各方绑定到一起.