Android开发JetPack中的ViewModel
- 先看一下开发者文档的介绍
- 示例
- 设计界面
- 创建ViewModel类
- 在MainActivity.java中定义ViewModel对象
- 效果预览图
本文为学习类文档,通过学习B站up主longway777的视频, link.如有侵权,请联系博主进行删除
先看一下开发者文档的介绍
ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续存在。
简而言之一句话就是:
让Activity管界面,ViewModel管数据,且在翻转屏幕或者改变系统语言时数据不丢失
示例
创建一个新的项目,新版AS是默认使用Androidx的,旧版需要手动勾选
设计界面
设置一个文本框,两个按钮(分别为+1,-1),通过点击按钮,实现文本框内容的数字加减操作。
创建ViewModel类
在包名处创建一个类,名为NumberViewModel,继承ViewModel类
并在ViewModel中管理我们将要操作的数字,并声明为public
复制代码
1
2
3
4
5
6
7
8package com.example.viewmodeldemo; import androidx.lifecycle.ViewModel; public class NumberViewModel extends ViewModel { public int number; }
在MainActivity.java中定义ViewModel对象
此处发现一个问题——新版的jetpack已经将ViewModelProviders弃用!
numberViewModel = ViewModelProviders.of(this).get(NumberViewModel.class);
因此查阅开发者文档查找新的方法,功夫不负有心人,查到新版使用方法
- 首先在build.gradle(Module:app)中添加依赖
复制代码
1
2
3
4dependencies { implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' }
- 在此粘贴使用方法
复制代码
1
2numberViewModel = new ViewModelProvider(this).get(NumberViewModel.class);
此处粘贴全部代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46package com.example.viewmodeldemo; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.ViewModelProvider; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { NumberViewModel numberViewModel; TextView textView_showNumber; Button button_add,button_minus @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); numberViewModel = new ViewModelProvider(this).get(NumberViewModel.class); textView_showNumber = findViewById(R.id.textView_showNumber); button_add = findViewById(R.id.button_add); button_minus = findViewById(R.id.button_minus); textView_showNumber.setText(String.valueOf(numberViewModel.number)); //onCreate()时显示界面数字 button_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { numberViewModel.number++; //+1 textView_showNumber.setText(String.valueOf(numberViewModel.number));//刷新界面 } }); button_minus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { numberViewModel.number--; //-1 textView_showNumber.setText(String.valueOf(numberViewModel.number));//刷新界面 } }); } }
效果预览图
运行项目之后,点击按钮观察界面实现,加与减的操作
翻转屏幕后数据也不会消除
至此项目完成,代码很简单,因此不粘贴源码,快去试试吧!
最后
以上就是轻松超短裙最近收集整理的关于关于ViewModel的初步理解先看一下开发者文档的介绍的全部内容,更多相关关于ViewModel内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复