美文网首页
demo理解jetpack中的Databindding等框架

demo理解jetpack中的Databindding等框架

作者: 爱你为你做饭 | 来源:发表于2022-10-02 17:31 被阅读0次

    参考文章:
    Android DataBinding 从入门到进阶
    Databinding与LiveData的合作
    Android Navigation 如何动态的更换StartDestination &&保存Fra
    理解MVVM中的view-bindding和databindding
    Databindding中String字符串的语法操作集合

    最近项目中要用Databindding做MVVM结构,所以趁有时间写了一个demo熟悉Databindding中的一些入门和进阶和细节东西主要包括navigation,viewmodel,livdata,Databindding这几个jetpack框架中的,主要参考了动脑的视频和第二篇文章下面把一些demo的框架和重点整理如下,方便后续查看。

    1. demo使用了as的底部tab工程框架,也就不需要自己再去开发就可以了解到navigation的使用,确实方便不少比以前viewpager+fragment方便很多,不太好的是navigation导航页面会重走fragment的生命周期,第三篇文章也给到了对应的解释和优化方法。
    2. viewmodel和livedata此处就不做过多解释,主要是对Databindding的整理:
      • Databindding的使用(databindding和viewbindding的区别可以参考第四篇文章)
      • Databindding 单项数据绑定包括声明数据对象继承BaseObserval修改get和set api 和系统封装的Observable系列对象实现单项数据绑定。
      • Databindding 双向数据绑定需要注意利用setLifecycleOwner实现数据和view的监听的生命周期,数据的生命周期是那般就设置为那般。
      • 事件监听绑定
      • 引入类使用类的属性和api方法
      • 在xml布局文件中即Databindding@{}中使用各种运算符,包括基本运算符和三目运算符等等,具体可以参考第二篇文章
      • Databindding中支持判空实现即??运算符的实现
      • Databindding支持引入view后直接进行view的属性控制 比如visible等
      • Databindding对于数据会赋值默认值 string赋值null int默认赋值0
      • Databindding支持include和viewstub的用法借助于bind命名空间实现数据的对应绑定
      • 使用bindAdapter可以扩展布局view的属性,比如Image直接加载网络图片,textview加载text时做正则校验等。
      • 使用BindingConversion实现@{}中字符串的转换还有就是可以实现数据的类型转换,比如string类型转为int(color的转换),res数据的常规转换等。
      • Databindding中可以直接使用list/set/map/array等常见的java集合数据结构和Android独有的数据结构,用法和常规类的引入一致,需要注意的是除了引入对应的类外还需要声明对应的index/key来访问集合的单个item数据
        • Databindding支持在@{}中直接使用res内中的资源。
        • 后续功能待开发中。。。。

    2.设置当前的Databindding的生命周期归属

    1. 设置当前的viewmodel中数据双向绑定不依赖于Observer 普通字段也可以在设置的生命周期内自动更新UI(个人理解还需要后续验证)
    2. 理解viewmodel和AndroidViewModel?
      • AndroidViewModel 系统提供直接实现了viewmodel接口
      • 功能上添加了application对象的持有(仅添加这一个功能)
      • 持有了application对象即可以访问上下文资源。
      • 使用时可以直接继承AndroidViewModel,在activity/fragment中获取的时候需要使用下面代码先绑定对应的application再获取对应的viewmodel对象即:
    new ViewModelProvider(this,new ViewModelProvider.
    AndroidViewModelFactory(getApplication()))
    

    相关文章

      网友评论

          本文标题:demo理解jetpack中的Databindding等框架

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