编译时绑定布局与对象 -- APT预编译方式
引入databinding需要做以下配置(Kotlin项目)
apply plugin: 'kotlin-kapt'
android {
dataBinding{
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:3.5.3"
}
如下面的activity_main.xml布局文件,经过APT预编译后,会自动生成绑定的java代码,kotlin的在buid/generated/source/kapt/debug下,java的在buid/generated/source/apt/debug里。
<layout>
<data>
<variable
name="loginviewmodel"
type="com.hujun.mvvm.LoginViewModel" />
</data>
<LinearLayout>
...
</LinearLayout>
</layout>
会自动生成ActivityMainBindingImpl,其父类是ActivityMainBinding。
除了自动生成java文件,还会生成activity_main-layout.xml文件。

布局文件为activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 配置 -->
<data>
<variable
name="userinfo"
type="com.hujun.databinding.UserInfo" />
</data>
<!-- 布局 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:hint="输入名字"
android:text="@{userinfo.name}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:hint="输入年龄"
android:text="@{userinfo.age}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</layout>
在build的时候,会扫描项目的所有Module,然后生成java文件和xml文件。
xml文件在目录
/build/intermediates/data_binding_layout_info_type_merge/debug/mergeDebugResources/out
java文件在目录
build/generated/source/kapt/debug/com/hujun/databinding
网友评论