一分钟带你入门MVVM和ViewModel

news2024/11/19 1:37:00

目录

0.为啥用ViewModel进行数据的存取

1.MVVM的具体含义

2.viewModel内部构造

3.配置viewModel

3.1 声明一个ViewModel实例类

3.2  viewModel功能实现


0.为啥用ViewModel进行数据的存取

通过持有LiveData维护保存数据的状态

为啥维护 ? : 当Activity旋转,跳转时,进行控件销毁,数据丢失

                        MutableLiveData可以将数据保存在一个特殊内存空间

保存多久?  : 在Fragment,Activity中初始化ViewModel,将他们本身的lifecycle传给                              viewModel,viewModel的生命周期跟他们同步

ViewModel的优势:  生命周期和数据持久化,它就适用于Activity和Fragment,

                                       其次就是异步回调,不会造成内存泄漏,

                                        再次就是对View层和Model层进行隔离,是两者不存在耦合性。

1.MVVM的具体含义

M  :  model  自定义类

V   :  view    UI界面以及其控件

VM :  viewModel  多界面 统一存取数据,可利用databind进行view和model的数据的双向更新

2.viewModel内部构造

继承viewModel或者AndroidVIewModel(Application)

内部定义——“共享数据” , 即多个界面共用一套数据,只要是共享数据,定义在viewModel

MutableLiveData(默认初始值)

实现共享数据的set和get方法

set 方法 ——》定义的共享变量. postVaule()

get 方法 ——》定义的共享变量. value()

3.配置viewModel

3.1 声明一个ViewModel实例类

三种声明viewModel方式

第一,如自定义控件 不存在lifecycle ,viewModel靠外部传入

第二、简单方法  利用声明后缀 by viewModels()

        通常在Fragment和Activity这种自带lifecycle

第三、标准方法  利用ViewModelProvider

3.2  viewModel功能实现

第一:如自定义控件,Adapter(需要传入viewModel),将本身viewModel传入其中

第二:提供各界面 修改共享数据(viewModel内的set方法)

第三:数据观察,实时更新UI界面的数据

        实际为  找到共享数据.observe(传入自身lifecycleOwner) { // 监视到该项共享数据改变后,立刻执行的操作}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1472459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据安全策略

当您在第一线担负着确保公司的信息和系统尽可能免受风险的关键职责时,您的数据安全策略需要复杂且多层次。威胁可能有多种形式:恶意软件、黑客攻击、财务或信息盗窃、破坏、间谍活动,甚至是您信任的员工故意或无意的活动造成的。因此&#xf…

成都直播基地用心建设三大生态服务体系服务支撑西部电商

天府锋巢直播产业基地用心建设三大生态服务体系的服务支撑,这为直播行业更加完善的提供了全生命周期的服务方案,成都直播基地助力创业者更好地“开源节流”。 首先,天府锋巢直播产业基地作为成都规模最大的直播基地,具有全面的基…

什么是DOM?(详解)

什么是DOM? DOM的定义知识回顾什么是D?什么是O?什么是M?什么是DOM树?根节点对象与节点对象 DOM树简单举例DOM的主要用途 DOM的定义 DOM(Document Object Model,文档对象模型) W3C对…

23年中科院1区算法|长鼻浣熊优化算法COA原理及其利用与改进(Matlab/Python)

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进 CEC2005中的测试 本文 KAU将介绍一个2023年1月发表在中科院1区KBS上的优化算法——长鼻浣熊优化算法(Coati Optimization Algorithm,COA)[1] 该算法由Dehg…

【Zotero】在zotero中如何重新编辑文献条目信息

博主最近在使用zotero中,当将下载好的文献直接拖拽到相应文件夹目录下后,一般系统会自动查找到文献的条目信息,可是有时候会出现自动查找的文献条目信息与真实的文献内容不一致的情况,这时需要手动重新编辑文献条目信息。这里将博…

设计模式(三)建造者模式

相关文章设计模式系列 1.建造者模式简介 定义 建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 简介 建造者模式(builder)是创建一个复杂对象的创建型…

【随笔】固态硬盘数据删除无法恢复(开启TRIM),注意数据备份

文章目录 一、序二、机械硬盘和固态硬盘的物理结构与工作原理2.1 机械硬盘2.11 基本结构2.12 工作原理 2.2 固态硬盘2.21 基本结构2.22 工作原理 三、机械硬盘和固态硬盘的垃圾回收机制3.1 机械硬盘GC3.2 固态硬盘GC3.3 TRIM指令开启和关闭 四、做好数据备份 一、序 周末电脑突…

爬某网站延禧宫率第一集视频

import requests import re from tqdm import tqdm # 网址链接:https://v.ijujitv.cc/play/24291-1-1.html url https://v6.1080pzy.co/20220801/urxniJCN/hls/index.m3u8 headers {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) Appl…

【Golang切片】

切片 切片的引入内存分析切片的定义切片的遍历切片注意事项 切片的引入 【1】切片(slice)是golang中一种特有的数据类型 【2】数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在Go语言的代码…

第六十八天 APP攻防-XposedFridaHook证书校验反代理代理转发

第68天 APP攻防-Xposed&Frida&Hook&证书校验&反代理&代理转发 知识点: 1、APP防代理绕过-应用&转发 2、APP证书校验类型-单向&双向 3、APP证书校验绕过-Frida&XP框架等 章节点: 1、信息收集-应用&资产提取&权…

游戏 CP 专访| InOutPath 技术干货分享!

“ 编辑语:STEAM 上的 3D 解密游戏《InOutPath》以其清新的画面,独特的玩法,受到了广大 STEAM 玩家,以及 Cocos 开发者们的关注。今天有幸邀请到了这款游戏的开发商,为大家做一次技术分享。希望能够对在用 Cocos Creat…

嵌入式中逻辑分析仪基本操作方法

前期准备 1.一块能触摸的屏对应的主板机 2.逻辑分析仪对应的软件工具 3.对应的拓展板 4.确定拓展板的引脚分布情况 第一步:逻辑分析仪j基本操作 1.数据捕捉需要先进行对应软件安装,并按照需求进行配置 2.这里以A20为例:此手机使用显示驱动芯片CST148,触摸屏分辨…

SImpAl

output matrix M,Curriculum using w ( x t , f , h ) w(x_t, f, h) w(xt​,f,h) 辅助信息 作者未提供代码

数学建模论文、代码百度网盘链接

1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…

STM32控制数码管从0显示到99

首先 先画电路图吧!打开proteus,导入相关器件,绘制电路图。如下:(记得要保存啊!发现模拟一遍程序就自动退出了,有bug,我是解决不了,所以就是要及时保存,自己重…

设计模式(七)装饰模式

相关文章设计模式系列 1.装饰模式简介 装饰模式介绍 装饰模式是结构型设计模式之一,不必改变类文件和使用继承的情况下,动态地扩展一个对象的功能,是继承的替代方案之一。它是通过创建一个包装对象,也就是装饰来包裹真实的对象…

使用ClickHouse进行SQL动态列选择

本文字数:4073;估计阅读时间:11 分钟 作者:Mark Needham 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 在处理包含大量列的数据集时,我们通常希望在其中的一部分列上做聚合…

模型评估方式

文章目录 一、有监督-分类模型1、混淆矩阵2、分类模型的精度和召回率3、ROC曲线与AUC 二、有监督-回归模型1、均方误差MSE2、 R 2 R^2 R2决定系数3、回归模型代码示例 三、无监督模型1、kmeans求解最优k值的方法:轮廓系数、肘部法2、GMM的最优组件个数:A…

基于springboot的新闻资讯系统的设计与实现

**🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅**一 、设计说明 1.1 课题背景…

JavaAPI常用类03

目录 java.lang.Math Math类 代码 运行 Random类 代码 运行 Date类/Calendar类/ SimpleDateFormat类 Date类 代码 运行 Calendar类 代码 运行 SimpleDateFormat类 代码一 运行 常用的转换符 代码二 运行 java.math BigInteger 代码 运行 BigDecimal …