简介
Databinding 是2015年谷歌推出的在android上实现mvvm模式的实现方式,即实现了View与Model之间的绑定
基本使用
1.在build.gradle 中开启dataBinding
android {
...
dataBinding{
enabled =true;
}
...
2.启用 DataBinding 后,这里先来看下如何在布局文件中绑定指定的变量,打开布局文件,选中根布局的 ViewGroup,按住 Alt + 回车键,点击 “Convert to data binding layout”,就可以生成 DataBinding 需要的布局规则。
image.png
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<android.support.constraint.ConstraintLayout
android:id="@+id/cl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
</android.support.constraint.ConstraintLayout>
</layout>
3.在activity中使用设置布局setContentView改使用 DataBindingUtil.setContentView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main2);
}
其中ActivityMainBinding 是DataBinding 框架自动生成的文件(一旦xml 写了layout标签就自动生成该类)命名是以布局名称去除下划线后的帕斯卡命名方式
4.使用xml中的View再也不用findViewById了 ,butterknife 之类的辅助框架也统统靠边了
activityMainBinding.clContent.setonClickListener(v->{
});
是的就是这么简单只要xml中的View声明了id 通过binding 对象就可以直接引用
5.数据绑定
- 声明在xml中使用的data类 Student
public class Student{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
- 在data标签底下声明需要在xml中使用data类及名称,其中name是自定义的可以任意只要符合命名规范,绑定在TextView 上及使用@{data.name} ,前提是data类中有相应的getter方法
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="data"
type="com.example.Student"/>
</data>
<android.support.constraint.ConstraintLayout
android:id="@+id/cl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
....
android:text="@{data.name}"
/>
</android.support.constraint.ConstraintLayout>
</layout>
6. 设置绑定数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main2);
Student student = new Student()
student.setName("sonsdfsdfsdf")
//第一种
// activityMainBinding.setData(student);
//第二种
activityMainBinding.setVariable(BR.data,student);
}
1.在data中声明的variable 会自动生成对呀的getter跟setter 方法,直接调用即可
2.通用方法是根据variable生成的BR值直接设置value








网友评论