为什么写这篇博客
网上大部分博客,代码量都比较大,把实际的业务都代入进去了
这篇博客的目的,就是为了讲解基本原理和使用思路,然后给出一个最简单的Demo
这里不讲解具体用法,那样篇幅会太长,直接看Demo代码就行
什么是ViewBinding
ViewBinding是一项根据布局文件自动生成所有控件对象的技术,类似于ButterKnife
使用ViewBinding,需要在gradle脚本中开启ViewBinding特性,编译时会自动生成Layout对应的Binding对象
什么是DataBinding
DataBinding是一项将控件内容与对象数值进行绑定的技术
当控件内容发生改变时,对象数值自动改变
当对象数值发生改变时,控件内容也自动改变
android中的DataBinding,主要是通过ViewModel和LiveData这两项技术来实现的
使用ViewBinding,需要在gradle脚本中开启DataBinding特性,这样才能使用ViewModel相关功能
什么是ViewModel和LiveData
ViewModel是一个特殊的数值容器,它可以与布局中的控件进行双向绑定,从而实现数值自动同步
ViewModel的生命周期与Activity或Fragment进行绑定,能够自动销毁
LiveData也是一个特殊的数值容器,它可以对数值变化进行监听,从而实现响应式编程特性
ViewModel和LiveData使用方法
定义ViewModel,其中的数值通过LiveData包装
在xml中,通过layout标签+data标签+变量表达式的方式,来让控件与ViewModel中的值绑定
在Activity中创建ViewModel
在Activity中为ViewModel中的LiveData添加数值监听
在Activity中为ViewModel设置初始值
将ViewModel与Binding绑定
布局内容发生变化时,LiveData会自动更新
手动修改LiveData时,需要通过setValue或postValue来通知订阅者
如何通过ViewModel和LiveData实现MVVM架构
创建ViewModel,将布局文件中需要绑定的属性添加到其中
在ViewModel中创建DataRepository,用于获取和处理数据,这个类就是负责model层工作
在Activity中,通过ViewModel订阅DataRepository处理结果,处理结果可以通过LiveData或RxJava来订阅
源码
ViewBinding+DataBinding+MVVM.zip