美文网首页
DataBinding+ViewModel+LiveData的使

DataBinding+ViewModel+LiveData的使

作者: 奔跑的佩恩 | 来源:发表于2023-07-16 14:10 被阅读0次

    前言

    之前我们介绍了DataBinding的相关使用,大家感兴趣的话,可参看以下文章
    DataBinding(一) — 基本使用
    DataBinding(二) — 加载图片
    DataBinding(三) — BaseObservable,ObservableField实现数据双向绑定
    DataBinding(四) — 在RecyclerView上的使用

    今天我们就来学习下DataBinding+ViewModel+LiveData的使用。

    1. DataBinding前置准备
    2. MainActivity中使用
    3. MainActivity类对应布局文件activity_main.xml
    4. ViewModel中各方法实现
    5. 需要注意的问题
    6. 效果图

    先来波效果图


    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代码:

    相关文章

      网友评论

          本文标题:DataBinding+ViewModel+LiveData的使

          本文链接:https://www.haomeiwen.com/subject/ykfwudtx.html