Databingding基础使用入门

一、基础配置

  首先在build.gradle下配置databingding

 

1 android {
2         ........
3     dataBinding {
4         enabled = true
5     }
6 }

 

 

 

 

二、Xml文件配置

  将根布局改为layout,然后是data标签,用于声明变量,variable标签代表一个变量,name是变量名,type是变量类型。Import标签是声明类型,alias是起别名,当两个类名相同,可以设置不同的alias名区分。

接着和data平级的则是以前传统的布局,在布局中通过“@{}”进行单向绑定,“@={}”则是进行双向绑定,进行双向绑定时,javabean需要继承BaseObservable观察类,详细后续写。

 

 1 <layout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools">
 3     <data>
 4      <!--可以全局直接导入-->
 5         <import
 6             alias="UserSB"
 7             type="com.lieyun.test.databinding.UserBean" />
 8         <variable
 9             name="question"
10             type="com.example.questionanswer.pojo.Question" />
11     </data>
12 <LinearLayout>
13     ......
14     <TextView
15             android:layout_width="match_parent"
16             android:layout_height="wrap_content"
17             android:gravity="center"
18             android:text="@={question.question_text}"
19             android:textSize="20sp"/>
20 </LinearLayout>
21 </layout>

 

三、Activity配置

       将传统的setContentView方法改为databing的写法,ActivityMainBinding是根据xml文件名自动生成的,如下面的,xml文件名为activity_main,databingding会用驼峰命名法,加上Bingding后生成对应的ActivityMainBingding类。然后bingding的setQuestion方法是根据xml中的变量名自动生成的。

 

1 protected void onCreate(Bundle savedInstanceState) {
2     super.onCreate(savedInstanceState);
3     ActivityMainBinding bingding = DataBindingUtil.setContentView(this,R.layout.activity_main);
4     bingding.setQuestion(question);
5 }

 

四、双向绑定,动态更新

  在javabean中,首先要让类继承BaseObservable类,然后对于get方法,在前面加上”@Bindable”标签;对于set方法,在结尾加上notifyPropertyChanged(BR.question_text);其中question_text是变量名,选择相应的变量名即可。

 

 1 public class Question extends BaseObservable {
 2 
 3     private String question_text;
 4 
 5     @Bindable
 6     public String getQuestion_text() {
 7         return question_text;
 8     }
 9 
10     public void setQuestion_text(String question_text) {
11         this.question_text = question_text;
12         notifyPropertyChanged(BR.question_text);
13     }
14 }

 

上一篇:结对项目总结


下一篇:结对编程项目总结