DataBinding+ViewModel+LiveData的使
2023-07-16 本文已影响0人
奔跑的佩恩
前言
之前我们介绍了DataBinding
的相关使用,大家感兴趣的话,可参看以下文章
DataBinding(一) — 基本使用
DataBinding(二) — 加载图片
DataBinding(三) — BaseObservable,ObservableField实现数据双向绑定
DataBinding(四) — 在RecyclerView上的使用
今天我们就来学习下DataBinding+ViewModel+LiveData
的使用。
-
DataBinding
前置准备 -
MainActivity
中使用 -
MainActivity
类对应布局文件activity_main.xml
-
ViewModel
中各方法实现 - 需要注意的问题
- 效果图
先来波效果图
1.gif
一. DataBinding前置准备
在使用DataBinding
之前,我们需要添加DataBinding
相关配置,具体的大家可参考文章DataBinding(一) — 基本使用
对ViewModel
基本使用不了解的,可参考以下文章
ViewModel的使用
对LiveData
使用不了解的,可参考以下文章
LiveData的使用
这里就不再赘述了。
二 MainActivity 中使用
下面以实现两个战队(A
队,B
队)的比分记录为例进行讲解。
我们将具体的分数加减,撤销,重置等逻辑放到自定义的MainViewModel
中处理。在MainActivity
中要处理DataBinding
加载布局,MainViewModel
初始化等问题,下面给出MainActivity
代码:
class MainActivity : AppCompatActivity(){
private lateinit var mBinding: ActivityMainBinding
private lateinit var mainViewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//加载布局
mBinding = DataBindingUtil.setContentView(this,R.layout.activity_main)
initView()
initData(savedInstanceState)
setListener()
}
private fun initView(){
}
private fun initData(savedInstanceState: Bundle?){
mainViewModel = BaseViewModel.getViewModel2(this@MainActivity,savedInstanceState,null,MainViewModel::class.java) as MainViewModel
mBinding.viewModel = mainViewModel
//dataBinding绑定activity感知生命周期
mBinding.lifecycleOwner = this
}
private fun setListener(){
}
}
三. MainActivity 类对应布局文件activity_main.xml
分数的显示,以及对应的按钮点击事件,是直接在MainActivity
对应的布局文件activity_main.xml
中写的,现在让我们看看activity_main.xml
代码: