Android之ViewModel、LiveData、DataBinding

Android之ViewModel、LiveData、DataBinding
文章图片

谷歌提供的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。

    推荐阅读