Android : ViewModel+LiveData observe观察数据 改变内容简单应用

observe观察数据  改变内容

1.导包

// 使用androidx版本库implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03'// 或者,使用support版本库implementation 'android.arch.lifecycle:extensions:1.1.1'

2.继承ViewModel

package com.example.mylivedata;import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;//需要改变的数据
public class MyViewModel extends ViewModel {private MutableLiveData<Integer>  data;public MutableLiveData<Integer> getData() {if(data == null){data = new MutableLiveData<>();data.setValue(0);}return data;}public void addNumberData(int num){data.setValue(data.getValue() + num);}
}

3.使用 

package com.example.mylivedata;import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;public class MainActivity extends AppCompatActivity {private TextView textView;private ImageView imgZan,imgCai;private MyViewModel myViewModel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.tv_content);imgZan = findViewById(R.id.img_zan);imgCai =findViewById(R.id.img_cai);myViewModel= ViewModelProviders.of(this).get(MyViewModel.class);//观察自己myViewModel.getData().observe(this, new Observer<Integer>() {@Overridepublic void onChanged(Integer integer) {//内容发生改变textView.setText(String.valueOf(integer));}});//绑定事件imgZan.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {myViewModle.addNumberData(1);}});imgCai.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {myViewModle.addNumberData(-1);}});}
}

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

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

相关文章

CommonJs和ES6模块区别,项目中的运用差距

前言 CommonJS 和 ES6 模块是 JavaScript 中两种不同的模块系统。它们有一些区别&#xff0c;尤其在实际应用中的使用上有一些差异。 一、区别 1. 语法差异 CommonJS&#xff1a;使用 require 导入模块&#xff0c;使用 module.exports 或 exports 导出模块。 ES6 模块&…

openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引

文章目录 openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引141.1 背景信息141.2 重建索引141.3 操作步骤 openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引 141.1 背景信息 数据库经过多次删除操作后&#xff0c;索引页面上的索引键将被…

一次北斗接收机调试总结

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 最近项目中要用到北斗接收机&#xff0c;它的样子是长这样的&#xff1a; 这部机器里面是没有操作系统的&#xff0c;由单片机控制。最近我们要根据协议…

ChatGPT发布一年后,搜索引擎的日子还好吗?

导读&#xff1a;生成式AI&#xff0c;搜索引擎的终结者还是进化加速器 ChatGPT发布刚刚一年&#xff0c;互联网世界已经换了人间。 2023年&#xff0c;以ChatGPT和大模型为代表的生成式AI浪潮对全球互联网、云计算、人工智能领域都带来巨大冲击。而且生成式AI在各行各业的应用…

Linux Camera Driver(2):CIS设备注册(DTS)

一:MIPI接口 1、硬件接口 MIPI接口以rv1109和gc2053的硬件为例进行说明: 2、ISP驱动 注意配置事项: endpoint配置,必须指定data-lanes,否则无法识别为mipi类型 链接方式:sensor->csi_dphy->isp->ispp (1)sensor节点配置 根据原理图可知:mipicsi_clk0即引…

navicate16 2059 plugin http could not be loaded

plugin http could not be loaded 乱码 library path http.dll 今天新装一台机子的navicate遇到这个问题。 查了半天都是说 caching_sha2_password’的解决办法。 然后是咋解决的呢&#xff0c;真是丢脸 由于我是直接从浏览器复制下来的ip&#xff0c;所以虽然我只复制了ip地…

结合SK和ChatGLM3B+whisper+Avalonia实现语音切换城市

结合SK和ChatGLM3BwhisperAvalonia实现语音切换城市 先创建一个Avalonia的MVVM项目模板,项目名称GisApp 项目创建完成以后添加以下nuget依赖 <PackageReference Include"Mapsui.Avalonia" Version"4.1.1" /> <PackageReference Include"M…

2024年PMP考试会有变化吗?你关心的来了!

2024年PMP考试大纲依然使用项目管理协会&#xff08;PMI协会&#xff09;于2021年1月发布的考试内容大纲。 PMP考试题目将分布在以下三个领域&#xff1a; 1【人员】考试内容所占比例 42% 2【过程】考试内容所占比例 50% 3【业务环境】考试内容所占比例 8% 在考试中约一半…

Linux halt命令教程:如何安全地关闭你的系统(附详细实例和注意事项)

Linux halt命令介绍 Linux halt命令是一个用于指示硬件停止所有CPU功能的命令。基本上&#xff0c;它可以重启或停止系统。如果系统处于运行级别0或6&#xff0c;或者使用带有–force选项的命令&#xff0c;它将导致系统重启&#xff0c;否则它将导致系统关闭。 Linux halt命…

asp.net_sql2008公司人事管理系统

登录模块 流程图&#xff1a; ◆ 职工输入用户名、密码并选择登录身份&#xff0c;根据选择的身份做不同的操作 ◎ 若选择的是“职工”&#xff0c;系统将查询数据库中的用户表Users的记录&#xff0c;用户名密码核对正确后加载职工主界面&#xff1b; ◎ 若选择的是“管理员…

手把手教你搭建个人地图服务器(高德离线部署解决方案):获取地图瓦片数据、高德JS API、私有化部署和调用。。。

一、概述 众所周知&#xff0c;目前常见的地图&#xff08;高德、百度、腾讯等&#xff09;只提供在线API服务&#xff0c;对于一些内网应用而言&#xff0c;如果需要使用地图展示&#xff0c;则由于不能访问互联网而无法使用类似的第三方地图服务。 本文&#xff0c;通过将高…

非对象集合交、并、差处理

对于集合取交集、并集的处理其实有很多种方式,这里就介绍3种 第一种 是CollectionUtils工具类 第二种 是List自带方法 第三种 是JDK1.8 stream 新特性 1、CollectionUtils工具类 下面对于基本数据(包扩String)类型中的集合进行demo示例。 public static void main(String[]…

Django回顾【五】

目录 一、多表操作 【1】基于对象的跨表查 【2】基于双下滑线的连表查 【3】related_name 二、聚合查询与分组查询 【1】聚合查询 【2】分组查询 三、F与Q查询 【1】F查询 【2】Q查询 四、其他字段和字段参数 【1】其他字段 【2】ORM字段参数 【3】ForeignKey 属…

【刷题日志】牛客 HJ73 计算日期到天数转换

计算日期到天数转换 阅读题目解题方案 及 解题思路方法一 . 手撕日期类方法二 . 分别直接算出平年和闰年每个月的时间 并对应下标存入数组中&#xff0c;判断该年份为平年还是闰年&#xff0c;再 for循环依次求和优化&#xff1a;也不用分别算出平年和闰年的每个月的时间&#…

0041__网络协议——HTTP/1HTTP/2HTTP/3

网络协议——HTTP/1&HTTP/2&HTTP/3_′、、1http:/1http:/1_bdundun的博客-CSDN博客

win10、11系统安装班智达藏文输入法并正常使用(完美解决)

1. 结果图 2. 先闲聊两句 班智达输入法对于藏语初学者可谓是太好用了&#xff08;哈哈&#xff09;特别是联想提示的功能。不禁为开发团队点个赞。 表扬完了该批评批评了。班智达输入法的安装难度真是一言难尽。也许是开发者没有继续维护的缘故吧。想当年&#xff0c;哪个藏语…

关于QueryInterface的一个小理解

QueryInterface按照字面上的意思是查询获得接口&#xff0c;用时我们可以把他当做C#中的as 或 C中的dynamic_cast这样用即可&#xff08;不知道正不正确&#xff0c;请指教&#xff09;。 我们可以为QueryInterface写一个辅助函数&#xff1a; template<typename T>stat…

DCDC电源的选择

https://blog.csdn.net/xiahailong90/article/details/79086490 先说结论&#xff1a; 高开关频率的交换式电源转换器有利也有弊&#xff0c;本文提到的好处包括体积更小、瞬时响应更快以及电压overshoot 和undershoot 值都更小&#xff0c;主要缺点则是效率降低和热量增加。 …

朋友圈7大黄金发圈时间

众所周知&#xff0c;朋友圈运营是私域运营必不可少的重要环节。 因为做好朋友圈运营&#xff0c;能够打造形成高质量、高价值的私域流量&#xff0c;加快实现用户成交。 那么如何形成一个吸粉又吸金的人设&#xff0c;做出高质量的朋友圈发圈内容呢&#xff1f; 那么如何确保能…

深度学习在训练时更新和保存最佳训练结果的方法(字典方法,本地保存方法,模型深拷贝方法)

1.用参数字典 model.state_dict()更新最优参数 best_state_dict model.state_dict() # 训练前 best_state_dict model.state_dict() # 训练时更新最优state_dict完整代码&#xff1a; # 初始化一个变量来保存最优的state_dictbest_state_dict model.state_dict()for epoc…