当前位置: 首页 > news >正文

【Android】ViewBinding+DataBinding+MVVM新手快速上手

为什么写这篇博客

网上大部分博客,代码量都比较大,把实际的业务都代入进去了

这篇博客的目的,就是为了讲解基本原理和使用思路,然后给出一个最简单的Demo

这里不讲解具体用法,那样篇幅会太长,直接看Demo代码就行

什么是ViewBinding

ViewBinding是一项根据布局文件自动生成所有控件对象的技术,类似于ButterKnife

使用ViewBinding,需要在gradle脚本中开启ViewBinding特性,编译时会自动生成Layout对应的Binding对象

什么是DataBinding

DataBinding是一项将控件内容与对象数值进行绑定的技术

当控件内容发生改变时,对象数值自动改变

当对象数值发生改变时,控件内容也自动改变

android中的DataBinding,主要是通过ViewModel和LiveData这两项技术来实现的

使用ViewBinding,需要在gradle脚本中开启DataBinding特性,这样才能使用ViewModel相关功能

什么是ViewModel和LiveData

ViewModel是一个特殊的数值容器,它可以与布局中的控件进行双向绑定,从而实现数值自动同步

ViewModel的生命周期与Activity或Fragment进行绑定,能够自动销毁

LiveData也是一个特殊的数值容器,它可以对数值变化进行监听,从而实现响应式编程特性

ViewModel和LiveData使用方法

定义ViewModel,其中的数值通过LiveData包装

在xml中,通过layout标签+data标签+变量表达式的方式,来让控件与ViewModel中的值绑定

在Activity中创建ViewModel

在Activity中为ViewModel中的LiveData添加数值监听

在Activity中为ViewModel设置初始值

将ViewModel与Binding绑定

布局内容发生变化时,LiveData会自动更新

手动修改LiveData时,需要通过setValue或postValue来通知订阅者

如何通过ViewModel和LiveData实现MVVM架构

创建ViewModel,将布局文件中需要绑定的属性添加到其中

在ViewModel中创建DataRepository,用于获取和处理数据,这个类就是负责model层工作

在Activity中,通过ViewModel订阅DataRepository处理结果,处理结果可以通过LiveData或RxJava来订阅

源码

ViewBinding+DataBinding+MVVM.zip

http://www.lryc.cn/news/120850.html

相关文章:

  • 生成式人工智能模型:提升营销分析用户体验
  • 【并发编程】无锁环形队列Disruptor并发框架使用
  • 【C语言】初阶指针详解
  • ElasticSearch:项目实战(1)
  • React 实现文件分片上传和下载
  • 2023.8.13
  • kvm not all arguments converted during string
  • JVM 基础
  • 智谷星图赵俊:让人才和区块链产业“双向奔赴”丨对话MVP
  • C# Equals()方法报错:NullReferenceException was unhandled
  • Linux下C语言调用libcurl库获取天气预报信息
  • “深入解析JVM:Java虚拟机原理和内部结构“
  • Arrays.asList() 返回的list不能add,remove
  • 命令执行漏洞
  • Hive 中 sort by 和 order by 的区别
  • 网络资源利用最大化:爬虫带宽优化解决方案
  • STDF - 基于 Svelte 和 Tailwind CSS 打造的移动 web UI 组件库,Svelte 生态里不可多得的优秀项目
  • C语言一些有趣的冷门知识
  • Oracle数据库审计
  • Node.js新手在哪儿找小项目练手?
  • 全国各城市-货物进出口总额和利用外资-外商直接投资额实际使用额(1999-2020年)
  • CentOS 7查看磁盘空间
  • 基于PHP的轻量级博客typecho
  • MySQL多表查询
  • 消息队列(12) - 定义服务器类
  • 做正确的事 VS 正确的做事,哪个更重要?
  • 每日一题——寻找旋转排序数组中的最小值(I)
  • C语言每日一题:16:数对。
  • 中科亿海微浮点数转换定点数
  • JavaScript激活严格模式