SharedPreferences 数据传输中遇到的一些问题总结
原构想:MainActivity 设置两个按钮,btn1——跳转Main2Activity通过复选框组选择并提交,btn2——跳转Main3Activity通过RecycleView显示选择结果。
主要经验:SharedPreferences 使用前要先声明,否则读取为Null;
1、Main2Activity.java
1 package com.example.newrecycleviewdate;
2
3 import androidx.appcompat.app.AppCompatActivity;
4
5 import android.content.Intent;
6 import android.content.SharedPreferences;
7 import android.os.Bundle;
8 import android.view.View;
9 import android.widget.Button;
10 import android.widget.CheckBox;
11
12 import java.util.ArrayList;
13 import java.util.List;
14
15 public class Main2Activity extends AppCompatActivity {
16 private CheckBox chk;
17 private Button gotobtn;
18 private int[] id={R.id.ck1,R.id.ck2,R.id.ck3,R.id.ck4,R.id.ck5,R.id.ck6,R.id.ck7,R.id.ck8,R.id.ck9,R.id.ck10}; 数组储存重复的复选框ID,减少键盘磨损~
19 private List<String> list=new ArrayList<>();
20 SharedPreferences.Editor editor; //Editer 需先声明,否则取出数据为Null;
21
22 @Override
23 protected void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25 setContentView(R.layout.activity_main2);
26
27 gotobtn=findViewById(R.id.gotobtn);
28
29 gotobtn.setOnClickListener(new View.OnClickListener() {
30 @Override
31 public void onClick(View v) {
32 for (int i :id){ //循环检查复选框状态,选中则加入数组中
33 chk = findViewById(i);
34 if (chk.isChecked())
35 list.add(chk.getText().toString());
36 }
37 editor = getSharedPreferences("nameList",MODE_PRIVATE).edit();
38
39 editor.putInt("listsize",list.size());
40
41
42 for (int i=0 ;i< list.size();i++){
43 editor.putString("item"+i,list.get(i));
44 }
45
46
47 editor.commit();
48 startActivity(new Intent(Main2Activity.this,MainActivity.class));
49 }
50 });
51
52
53
54
55 }
56 }
2、Main3Activity
1 package com.example.newrecycleviewdate;
2
3 import androidx.appcompat.app.AppCompatActivity;
4 import androidx.recyclerview.widget.LinearLayoutManager;
5 import androidx.recyclerview.widget.RecyclerView;
6 import androidx.recyclerview.widget.StaggeredGridLayoutManager;
7
8 import android.content.SharedPreferences;
9 import android.os.Bundle;
10 import android.widget.TextView;
11
12 import java.util.ArrayList;
13 import java.util.Arrays;
14 import java.util.List;
15
16 public class Main3Activity extends AppCompatActivity {
17 private RecyclerView resultRy;
18 private List<String> data = new ArrayList<>();
19 private int count;
20 //private String[] st={"strind","33fi","33022","dvikeke","88vj3k"};
21 SharedPreferences myNum; //SharedPreferences 先声明,否则出现取出数据为空的情况
22 private MyRecycleAdapter myRecycleAdapter;
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.activity_main3);
28
29 resultRy = findViewById(R.id.resultRy);
30 count=0;
31
32 myNum = getSharedPreferences("nameList",MODE_PRIVATE);
33
34 count= myNum.getInt("listsize",0);
35 for (int i =0;i<count;i++){
36 data.add(myNum.getString("item"+i,"fale"));
37
38 }
39
40
41
42
43 myRecycleAdapter = new MyRecycleAdapter(Main3Activity.this, data);
44 LinearLayoutManager manager=new LinearLayoutManager(this);
45 StaggeredGridLayoutManager stagger = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
46 resultRy.setLayoutManager(stagger);
47 resultRy.setAdapter(myRecycleAdapter);
48
49
50
51 }
52 }
SharedPreferences 数据传输中遇到的一些问题总结的更多相关文章
- C#网络编程数据传输中封装数据帧头的方法
在C/S端编程的时候,经常要在C端和S端之间传数据时自定义一下报文的帧头,如果是在C/C++,封装帧头是一件很简单的事情,直接把unsigned char *强转为struct就行,但是在C#中,并没 ...
- AES和RSA混合加密技术在网络数据传输中的应用
原文:http://www.fx361.com/page/2017/0110/519967.shtml 摘要:文章通过分析和比较AES加密算法和RsA加密算法的实现过程和各自的特点, ...
- 关于supersocker的数据传输中遇到的问题
最近在学socket,在使用socket时数据的传输与接口都是byte,所以文本与文件的传输只要对传过来的byte处理好就可以. 但是在supersocket上,我却花费了很长的时间.原因如下: 1. ...
- 【转】深入理解Android中的SharedPreferences
SharedPreferences作为Android中数据存储方式的一种,我们经常会用到,它适合用来保存那些少量的数据,特别是键值对数据,比如配置信息,登录信息等.不过要想做到正确使用SharedPr ...
- Android中的SharedPreferences存储
一.前言 不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的.也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把 ...
- HTTP学习二:Web应用中的HTTP
1 HTTP连接 1.1 TCP连接对性能的影响 TCP三次握手如下图: 如上图,建立一次TCP连接要经过三个步骤.HTTP是建立在TCP之上的,因此TCP连接的性能直接影响HTTP的性能. TCP影 ...
- Android入门(九)文件存储与SharedPreferences存储
原文链接:http://www.orlion.ga/578/ Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储.SharedPreference存储以及数据库存储.当然, ...
- Android源码分析之SharedPreferences
在Android的日常开发中,相信大家都用过SharedPreferences来保存用户的某些settings值.Shared Preferences 以键值对的形式存储私有的原生类型数据,这里的私有 ...
- c#中序列化
序列化(Serialization)是.NET平台的特性之一.1.为什么要序列化:首先你应该明白系列化的目的就不难理解他了.系列化的目的就是能在网络上传输对象,否则就无法实现面向对象的分布式计算.比如 ...
随机推荐
- (十五)整合 Drools规则引擎,实现高效的业务规则
整合 Drools规则引擎,实现高效的业务规则 1.Drools引擎简介 1.1 规则语法 2.SpringBoot整合Drools 2.1 项目结构 2.2 核心依赖 2.3 配置文件 3.演示案例 ...
- java实现hbase数据库的增删改查操作(新API)
操作环境: java版本: jdk 1.7以上 hbase 版本:1.2.x hadoop版本:2.6.0以上 实现功能: 1,创建指定表 2,删除指定表 3,根据表名,行键,列族,列描述符,值 ...
- Flink-v1.12官方网站翻译-P001-Local Installation
本地安装 按照以下几个步骤下载最新的稳定版本并开始使用. 第一步:下载 为了能够运行Flink,唯一的要求是安装了一个有效的Java 8或11.你可以通过以下命令检查Java的正确安装. java - ...
- for循环语句学习
for循环又称为遍历循环,从名字就可以知道,它用于对象的遍历 语法格式: 会从可迭代对象对象中依次拿出值来赋值给变量,变量的值每次都会被修改 for 变量1[变量2...] in 可迭代对象: 代码块 ...
- MapReduce参数调优
原文链接:http://blog.javachen.com/2014/06/24/tuning-in-mapreduce/ 本文主要记录Hadoop 2.x版本中MapReduce参数调优,不涉及Ya ...
- hdu5884 Sort(二分)
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- codeforces 292E. Copying Data
We often have to copy large volumes of information. Such operation can take up many computer resourc ...
- python实现通过指定浏览器免费观看vip视频
程序是先通过一个解析视频的网站,然后我们提取其接口,然后实现观看vip视频的目的 所以说免费观看视频python程序很容易,但是下载视频就有些许麻烦了,下载视频请见我另一篇博客:python+fidd ...
- Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal (思维,逆序对)
题意:给你一个字符串,每次可以调换现字符串的相邻两个字符,问最少操作多少次使得这个字符串等于其反转过来的字符串. 题解:先考虑字符串中没有相同字符的情况,那么我们每次将目前字符串的最后一个字符一直调换 ...
- Codeforces Round #272 (Div. 2) B. Dreamoon and WiFi (暴力二进制枚举)
题意:给你一个只含\(+\)和\(-\)的字符串,统计它的加减和,然后再给你一个包含\(+,-,?\)的字符串,其中\(?\)可以表示为\(+\)或\(-\),问有多少种情况使得第二个字符串的加减和等 ...