Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之DataBinding初體驗(一)

Android之DataBinding初體驗(一)

編輯:關於Android編程

DataBinding是谷歌推出的一個官方的數據綁定框架,所以我們有必要學下怎麼使用它。如果你英文足夠好就可以去官網看。
https://developer.android.com/topic/libraries/data-binding/index.html


准備工作:
在 該Moudle下的build.gradle ,添加 :

dataBinding{
        enabled true
    }

這裡寫圖片描述

然後 ,rebuild project下;

然後我們再創建一個簡單的javabean,Student類:

/**
 * Created by Administrator on 2016/11/7.
 */

public class Student {
    private String name;
    private int age;


    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

修改 activity_mian.xml:



  
      
  


    
    

    
    

必須是< layout >這個為根節點,< data >節點裡的name 屬性的值可以任取,必須跟下面的你使用的相同。type是你的類型,一般就是你的類名。@{這裡面就是你text的值了},我的理解這就是數據綁定吧。不需要去java代碼中去setText()了

MainActivity代碼:

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.edu.databindingsimple.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {
   private  ActivityMainBinding mainBinding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mainBinding= DataBindingUtil. setContentView(this,R.layout.activity_main);//這樣就綁定了
        Student student=new Student("我不是程序員",22);
       //  mainBinding.setStudent(student);//賦值
         mainBinding.setVariable(BR.student,student);//這兩種方法都行
    }
}

接下來運行:

運行會報錯,因為我們的年齡是int型的,而text屬性接受的是string,所以要把main_activity那個改下;

  
    

接下來再運行下:

這裡寫圖片描述

是不是很簡單,代碼也變少了很多,沒有findViewById操作,沒有setText操作。

我們也可以為我們的控件綁定事件,接下來就演示下:

修改後的activity_main



  
      
     
  


    
    

    
    

修改後的MainActivity:

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.example.edu.databindingsimple.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {
   private  ActivityMainBinding mainBinding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mainBinding= DataBindingUtil. setContentView(this,R.layout.activity_main);//這樣就綁定了
        Student student=new Student("我不是程序員",22);
        //mainBinding.setStudent(student);
        mainBinding.setVariable(BR.student,student);//這兩種方法都行
        mainBinding.setMyclick(this);
    }
    //這個是綁定到第一個textview 控件中
    public void myClick(View view){
        Toast.makeText(this,((TextView)view).getText(),Toast.LENGTH_SHORT).show();
    }
}

運行結果:

這裡寫圖片描述

接下來我們在寫另外一種方式,也可以綁定方法,

修改後的activity_main



  
      
     
  


    
    

    
    

修改後的activity_main

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.example.edu.databindingsimple.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {
   private  ActivityMainBinding mainBinding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mainBinding= DataBindingUtil. setContentView(this,R.layout.activity_main);//這樣就綁定了
        Student student=new Student("我不是程序員",22);
        //mainBinding.setStudent(student);
        mainBinding.setVariable(BR.student,student);//這兩種方法都行
        mainBinding.setMyclick(this);
    }
    //這個是綁定到第一個textview 控件中
    public void myClick(View view){
        Toast.makeText(this,((TextView)view).getText(),Toast.LENGTH_SHORT).show();
    }
    //這個是綁定到第二個textview 控件中
    public void myClick(Student student){
        Toast.makeText(this,"你好啊",Toast.LENGTH_SHORT).show();
    }

}

運行效果:

這裡寫圖片描述

可以看到兩種方式都行,效果都是差不多的。我估計應該可以綁定任何方法到控件中都行。大家可以試試,

修改後的activity_main

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.example.edu.databindingsimple.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {
   private  ActivityMainBinding mainBinding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mainBinding= DataBindingUtil. setContentView(this,R.layout.activity_main);//這樣就綁定了
        Student student=new Student("我不是程序員",22);
        //mainBinding.setStudent(student);
        mainBinding.setVariable(BR.student,student);//這兩種方法都行
        mainBinding.setMyclick(this);
    }
    //這個是綁定到第一個textview 控件中
    public void myClick(View view){
        Toast.makeText(this,((TextView)view).getText(),Toast.LENGTH_SHORT).show();
    }
    //這個是綁定到第二個textview 控件中
    public void myClick(Student student){
        Toast.makeText(this,"你好啊",Toast.LENGTH_SHORT).show();
    }
    //這個是綁定到第三個textview 控件中
    public void myClick(){
        Toast.makeText(this,"HelloWorld",Toast.LENGTH_SHORT).show();
    }
}

修改後的activity_main



  
      
     
  


    
    

    
    

    

運行效果:

這裡寫圖片描述

雙向綁定 :

修改Student:

import android.databinding.BaseObservable;
import android.databinding.Bindable;
/**
 * Created by Administrator on 2016/11/7.
 */

public class Student extends BaseObservable{
    private String name;
    private int age;


    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Bindable
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    notifyPropertyChanged(BR.name);
    }
    @Bindable
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
        notifyPropertyChanged(BR.age);
    }
}

修改activity_main:



  
      
     
  


    
    


    
    


就是把原來的
這個@{student.name}前面加了個=就行了。@={student.name}

MainActivity不需要改;
運行結果:
這裡寫圖片描述

好了,最基礎最基礎的學完了,還有很多高級特性,高級特性我就不講了,我講的不是很清楚。高級部分我也只是會用部分而已,

寫博客目的只是記錄自己學習的過程

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved