DataBinding基本使用

2019-12-28  本文已影响0人  进击的小大叔

简介

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.数据绑定
public class Student{
        private String name;
        public void setName(String name){
        this.name = name;
         }
         public String getName(){
              return name;
        }
}
<?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

以上就是关于databinding 的基本使用,关于databinding的深入使用有兴趣的可以看我的另一篇简书DataBinding的深入使用(一)

上一篇 下一篇

猜你喜欢

热点阅读