简介
官网地址 touch touch me then look look
接下来将介绍如何使用数据绑定库来声明布局以及减少逻辑和布局的耦合
data binding library 具有灵活性和兼容性,支持Android 2.1 (Api 7 + ),so u can 尽情使用
构建环境
android {
....
dataBinding {
enabled = true
}
}
如果你使用的事 kotlin 语法 还需要配置下面的内容
kapt {
generateStubs = true
}
buildscript {
...
dependencies {
...
kapt "com.android.databinding:compiler:your gradle version" //注意是gradle版本
}
}
如果是library中使用了这个库,则你的应用的 build.gradle 也需要配置。除此之外,Android Studio的版本需要在1.3+
如果你使用的Android studio 版本为3.1+ ,您还需要如下配置:
在gradle.properties中添加
android.databinding.enableV2=true
一个简单的例子
//data binding view 的布局文件
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> //跟布局
<data> //数据元素
<variable name="user" type="com.example.User"/> //绑定的model ->User,以及变量名->user
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/> //@{}取值
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/> //@{}取值
</LinearLayout>
</layout>
//下面数数据模型
public class User {
private final String firstName;
private final String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return this.firstName;
}
public String getLastName() {
return this.lastName;
}
}
//默认情况下,将根据布局文件的名称生成一个Binding类,将其转换为Pascal格式,并为其添加后缀“Binding”。
//上面的布局文件是main_activity.xml,所以生成的类是MainActivityBinding。
//这个类将布局属性(例如用户变量)的所有绑定保存到布局的视图中,并知道如何为绑定表达式分配值。
//下面是activity文件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
User user = new User("Test", "User");
binding.setUser(user);
}
get it now ?try try
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1