MVVM中DataBinding的初步使用及理解

MVVM中DataBinding的初步使用及理解

實操MVVM+Databinding
1.調整佈局,採用該模式來開發的話,佈局稍微跟平常的會有點出入,但是也有一套模板的,xml佈局分兩塊,
一是data類型模塊,存放的是一些導入類型,及數據實體
二是真正的佈局模塊,即界面展示模塊
簡易模板如下:

 <?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">
    <!--data類型模塊-->
     <data>

         <import type="android.view.View" />
     </data>
    <!--界面展示:注意:最外層需要由LinearLayout\RelatiaveLayout之類的包裹-->
    <LinearLayout
        android:layout_width="match_parent"
         android:layout_height="match_parent">
         <TextView
           android:id="@+id/tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="hello world"/>
     </LinearLayout>
2.綁定佈局 綁定佈局也有一套固定的編寫方式:調用DataBindingUtil的setContentView方法,傳入上下文與佈局文件,模板代碼如下:
ActivityMainBinding mViewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);

ActivityMainBinding其實就是你的xml文件的名字遵循駝峯命名最後再加個Binding即可,一般都會有提示的。
這就相當於我們平時的setContentView方法

3.填充佈局界面,
到了這步的話,其實就是把一些相關的數據進行填充,以及一些邏輯功能的編寫

在這裏講下數據填充的兩種方式:一是傳統的根據id獲取控件對象進行設值,這跟傳統的相比,表面省掉了findviewbyid這步。使編碼更加簡略,如下

 mViewDataBinding.tv.setText("view binding"); tv就是xml佈局中控件命名的ID

二是直接在xml中與數據源進行綁定,
首先你得定義一個類,這個類是用來數據的獲取,以及數據的綁定。在這裏我定義的是一個WidgetModel,用它來進行數據的獲取,與綁定,其代碼如下:

 public class WidgetModel {
    private static class SingleInstance{
         private static final WidgetModel WM = new WidgetModel();
     }
    public static WidgetModel mWModel;
     public static WidgetModel getInstance(){
          if(mWModel == null){
             mWModel = SingleInstance.WM;
         }
         return  mWModel;
     }

     public final ObservableField<String> mTvDatas = new ObservableField<>();


}

然後把這個控制類WidgetModel與mViewDataBinding進行綁定,通過調用setVariable方法出入一個整型,以及WidgetModel對象,注意這個整型其實就是類型區分
以便我這個控制類在綁定其它界面的時候可用。如:

mViewDataBinding.setVariable(DataBindingType.widgetModel,mViewModel);DataBindingType.widgetModel的值爲1

到了這個時候,控件的賦值可以通過控制類WidgetModel中的mTvDatas這個對象來進行賦值了,如:
mViewModel.mTvDatas.set(“data has changed”);
這樣控件的值就發生了改變。就是我的數據發生改變的話,控件的狀態也會隨之改變。。

以上其實只是mvvm中數據綁定的簡易的操作步驟以及用法。想繼續更深入的話,就需要自己花時間去深入瞭解了,以上是個人的理解,若有理解不當的地方請指出,謝謝。。

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