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中数据绑定的简易的操作步骤以及用法。想继续更深入的话,就需要自己花时间去深入了解了,以上是个人的理解,若有理解不当的地方请指出,谢谢。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值