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

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);}});}
}

相关文章:

  • Raspberry Pi 2, 2 of n - Pi 作为 IoT 消息代理
  • PostgreSQL 连接更新操作
  • UE4/UE5 材质实现带框圆环
  • 快速搞懂蔚来的换电模式 是新能源车的未来吗
  • Vue2虚拟列表,umy-ui封装
  • 计算机网络之IP篇
  • 生产实践:Redis与Mysql的数据强一致性方案
  • springboot 整合 Spring Security 上篇
  • Dockerfile脚本编写流程及示例
  • 零信任组件和实施
  • RK3288升级WebView版本,替换webview app
  • ODN光纤链路全程衰减如何计算
  • 《python每天一小段》-- (10)爬取小说:斗罗大陆
  • 【C语言】深入理解指针(1)
  • 软件平台架构设计与技术管理之道笔记
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【RocksDB】TransactionDB源码分析
  • C++11: atomic 头文件
  • js写一个简单的选项卡
  • Laravel 菜鸟晋级之路
  • Linux快速复制或删除大量小文件
  • PermissionScope Swift4 兼容问题
  • React as a UI Runtime(五、列表)
  • Spark学习笔记之相关记录
  • vue-router 实现分析
  • 复习Javascript专题(四):js中的深浅拷贝
  • 前端路由实现-history
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何在 Tornado 中实现 Middleware
  • 山寨一个 Promise
  • 深度学习中的信息论知识详解
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • postgresql行列转换函数
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $.proxy和$.extend
  • (八)c52学习之旅-中断实验
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (三) diretfbrc详解
  • (一)u-boot-nand.bin的下载
  • (转载)hibernate缓存
  • *p++,*(p++),*++p,(*p)++区别?
  • .a文件和.so文件
  • .Net 4.0并行库实用性演练
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net6 webapi log4net完整配置使用流程
  • .net分布式压力测试工具(Beetle.DT)
  • .NET建议使用的大小写命名原则
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET是什么
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET中的十进制浮点类型,徐汇区网站设计