Android Jetpack ViewModel管理数据
程序员文章站
2022-06-09 23:51:04
...
用Jetpack中的ViewModel管理数据
ViewModel是属于Android的Jetpack库里的一个类
创建项目时要先勾选 use androidx.* artifacts (现在已经必选)
实现效果:
1.创建ViewModel类
在MainActivity.java相同路径下新建java class
Superclass(继承于):androidx.lifecycle.ViewModel
(1)用ViewModel管理数据
(2)在MainActivity.java中关联控件和ViewModel类
- 通过ViewModelProviders.of(this).get(MyViewModel.class)创建一个ViewModel对象
ViewModelProviders导入:ViewModelProviders方法已弃用,先输入ViewModelProviders,依靠红色提示依次添加依赖,导入类
- 初始化界面
textView.setText(String.valueOf(myViewModel.number));
- 关联其余控件,设定点击事件等
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myViewModel.number++; // 点击让数据+1 myViewModel.number int类型
textView.setText(String.valueOf(myViewModel.number)); // 再刷新界面
}
});
完整代码:
package com.example.viewmodeltest;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProviders;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
MyViewModel myViewModel;//声明ViewModel变量
TextView textView;
Button button1,button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 关联
myViewModel=ViewModelProviders.of(this).get(MyViewModel.class); //创建一个ViewModel对象
textView=findViewById(R.id.textView);
textView.setText(String.valueOf(myViewModel.number));
button1=findViewById(R.id.button);
button2=findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myViewModel.number++; // 点击让数据+1 myViewModel.number int类型
textView.setText(String.valueOf(myViewModel.number)); // 再刷新界面
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myViewModel.number+=2;
textView.setText(String.valueOf(myViewModel.number));
}
});
}
}
通过让ViewModel管理数据,更加模块化,同时在不设置SaveIntanceState的情况下切换系统语言、翻转屏幕、home键暂停应用时,数据不丢失。
推荐阅读
-
android 数据库操作(常见的数据库管理系统)
-
android 数据库操作(常见的数据库管理系统)
-
Android通过ViewModel保存数据实现多页面的数据共享功能
-
手持式停车收费管理系统全套案例,支持车牌识别,包含了android版app,微信小程序查询,响应式管理后台,云端大数据存储
-
[Android Jetpack架构]数据绑定
-
Android通过ViewModel保存数据实现多页面的数据共享功能
-
Android 通过SQLite数据库实现数据存储管理
-
Android Jetpack架构组件(六)一文带你了解ViewModel的使用和原理
-
Android Jetpack-ViewModel
-
Android Jetpack(5):ViewModel