Android DataBinding的使用(一)

一、什麼是DataBinding?

    DataBinding 是谷歌官方發佈的在android上對MVVM設計模式的一個實現框架,其作用是實現數據綁定, 
    Android DataBinding主要實現了View和ViewModel的雙向綁定,包括用戶的響應。並且實現了自動更新。
    
DataBinding優點:
     1.大量減少Activity內的代碼。
     2.數據能夠單向或者雙向綁定到佈局文件當中,這樣有助於防止內存泄露,
        而且能夠自動進行空檢測以避免空指針異常

二、在androidStudio上如何使用DataBinding ?

① 在你的module中的build.gradle文件中添加dataBinding配置:

(添加完成後要編譯一下)

	android {
   		    ......
             dataBinding {
                   enabled = true
             }
     }  

②設置佈局(這裏以 activity_mail.xml 爲例)

在這裏插入圖片描述

③Bean類寫法

package com.qy.databinddemo;

public class UserBean{
	private  String  name;
	private  String  csdnAddress;
		
	public UserBean(String name,String csdnAddress){
		   this.name=name;
		   this.csdnAddress=csdnAddress;
	}
		
	public  String  getName(){
		  return name;
	}
		
	public void setName(String name){
		    this.name=name;
	}
		
	public String getCsdnAddress(){
		    return csdnAddress;
	}
		
	public void setCsdnAddress(String csdnAddress){
		   this.csdnAddress=csdnAddress;
	}
		
	@Override
	public String toString(){
		  return "UserBean{"+
		         "name='"+name+'\''+
		          ",csdnAddress='"+csdnAddress+'}';
	}
}

④ 佈局寫法

<?xmlversion="1.0"encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <!--
            type指的是類的路徑(也就是我們Bean類的路徑)
        -->
        <importtype="com.qy.databinddemo.UserBean"/>

        <!--name指的是標籤名-->
        <variable
            name="data"
            type="UserBean" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:gravity="center"
            android:text="@{data.name,default=默認值}" />
        <!--注意,default是用來在沒有賦值的情況下展示默認值的-->

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:gravity="center"
            android:text="@{data.csdnAddress}" />
    </LinearLayout>
</layout>

⑤ MainActivity中的寫法

 public class MainActivity extends AppCompatActivity{

        @Override
        protectedvoidonCreate(BundlesavedInstanceState){
            super.onCreate(savedInstanceState);
            //默認情況下,綁定類的名稱是基於佈局文件的名稱生成的,
            //它是將佈局文件名開頭大寫並加上“Binding”而成。
            //這個類擁有所有從屬性(例如用戶變量)到佈局的綁定關係並知道如何賦值綁定表達式。
            //最簡單的方法創建綁定的方法就是通過反射。
            ActivityMainBinding binding = 
                        DataBindingUtil.setContentView(this,R.layout.activity_main);

            UserBean user = new UserBean("蘇青巖","https://blog.csdn.net/qq_35953420");
            //綁定數據
            binding.setData(user);
            //修改idtextView1的控件的內容
            //binding.textView1.setText("蘇青巖大帥哥");

        }
    }

到這裏就可以實現效果了,當然 我們的DataBinding 可不僅僅只有這些小本事,這是最簡單的一個使用案例而已,同時它還可以使用在Fragment中、Recyclerview 中!!!
(這兩天內我會把DataBinding的其他功能也都寫上去的…)

在Fragment中使用部分代碼


public class Frag extends Fragment {
    
    private ViewDataBinding binding;

    @Override
    public View onCreateView(LayoutInflater inf, ViewGroup container, Bundle state) {
        binding = DataBindingUtil.inflate(inf, R.layout.frag, container, false);
        return binding.getRoot();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章