欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

程序员文章站 2022-06-07 18:18:33
...

dataBinding是Google官方开发的第三方视图数据绑定框架。优缺点如下:

优点:很好用

缺点:调试bug不易,部分AS版本中不太友好

首先说下如何使用:

在gradle中的android模块中添加 如下命令:

dataBinding {
        enabled = true
    }

如下图

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

然后将你要绑定的xml布局视图转换成Binding视图:

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

开始将bean对象放到xml布局中

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

然后通过dataBinding加载此布局:

DataBindingUtil.setContentView(this, R.layout.activity_home);

上面会返回一个dataBinding类型的对象ActivityHomeBinding这里说明下:这个返回的对象的名称是根据activity_home名称决定的。例如xml布局叫activity_page,那么返回的dataBinding类型就为ActivityPageBinding这个规则了。

然后可以拿到这个返回的对象去设置数据了

activityHomeBinding = DataBindingUtil.setContentView(this, R.layout.activity_home);
        people.setWork("高级移动金砖工程师");
        peopleMessage.setAddress("东直门");
        peopleMessage.setAge(21);
        peopleMessage.setName("李晓华");
        people.setPeopleMessage(peopleMessage);
        activityHomeBinding.setPeople(people);

当然也可以用这个返回的对象去调用xml布局中的id:例如

activityHomeBinding.tvShowPeople

上面的tvShowPeople就是xml中的tv_show_people这个id

如何更新数据呢?

我们需要在xml中这样写

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

重点代码

<TextView
            android:id="@+id/tv_show_people"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{people.peopleMessage.name+':'+people.work+':'+people.peopleMessage.age+':'+people.peopleMessage.address}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

数据绑定的规则:@{},这个大括号里面的就是我们设置的数据,people就是上面xml布局中的data标签中的name字段,people.work代表的是获取com.example.databindingdemo.bean.People这个路径下面的bean对象里面的work字段,其它字段同理

因为我们上面已经设置了people的基本参数了

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

这样数据就绑定了。项目跑起来就会显示刚刚设置的people数据了

 

我们再来看下更新数据:

首先在xml中定义点击事件onClick,下面红框里面的home.Onclick这个方法名称随意写

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

然后在activity中写好刚刚定义的Onclick方法:更新数据就是重新复制给people即可,在将重新复制的people赋值给binding那个对象即可

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

但是每次都要重新将复制的people赋值给binding那个对象太麻烦。

所以我们使用新方法,在bean对象里面使用注解:

1.首先类名要继承BaseObservable

2.在要更新同步数据的方法上面添加@Bindable注解

3.刷新数据这个方法notifyPropertyChanged(BR.更新的字段);

Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法

 

可能有点乱,但是对比源码看可能好点:GitHub源码下载