文章图片
谷歌提供的ViewModel可以更好的实现Android项目MVVM的架构,实现UI和数据的分离。在Activity生命周期内ViewModel是可以共享的,比如Activity和Fragment之间可以共用同一个ViewModel,那么通信就是这么简单。
在我看来ViewModel和LiveData就是最佳拍档,LiveData利用观察者模式对数据进行观察监听,只要数据有变化就会触发事件,从而刷新UI。
DataBinding简单点说就是数据绑定UI,Data类绑定UI后就可以在布局中使用了。这个绑定涉及面比较广,需要查找更多的资料学习。
一、ViewModel、LiveData
class MyViewModel : ViewModel() {
var mNum = MutableLiveData()
}class MyActivity: AppCompatActivity() {
onCreate() {
mViewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
// 观察者
mViewModel.mNum.observe(this, Observer {
// 刷新UI
})
}
}class MyFragment: Fragment() {
onCreateView() {
mViewModel = ViewModelProviders.of(activity).get(MyViewModel::class.java)
// 观察者
mViewModel.mNum.observe(this, Observer {
// 刷新UI
})
}
}
二、DataBinding 1、开启DataBinding
首先需要在build.grade文件中开启DataBinding,不然项目是不会生成相关布局的DataBinding文件的
android {
dataBinding {
enabled true
}
}
2、使用方法
布局文件xml
// 这里可以绑定ViewModel
// 这里可以使用ViewModel数据
Activity
class MyActivity: AppCompatActivity() {
onCreate() {
dataBinding = DataBindingUtil.setContentView(R.layout.activity_my)
// 然后就可以通过dataBinding.id调用控件了。
}
}
【Android之ViewModel、LiveData、DataBinding】其实Kotlin直接就可以通过控件id来调用控件了,所以主要目的在于绑定ViewModel。