原构想: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 数据传输中遇到的一些问题总结的更多相关文章

  1. C#网络编程数据传输中封装数据帧头的方法

    在C/S端编程的时候,经常要在C端和S端之间传数据时自定义一下报文的帧头,如果是在C/C++,封装帧头是一件很简单的事情,直接把unsigned char *强转为struct就行,但是在C#中,并没 ...

  2. AES和RSA混合加密技术在网络数据传输中的应用

    原文:http://www.fx361.com/page/2017/0110/519967.shtml          摘要:文章通过分析和比较AES加密算法和RsA加密算法的实现过程和各自的特点, ...

  3. 关于supersocker的数据传输中遇到的问题

    最近在学socket,在使用socket时数据的传输与接口都是byte,所以文本与文件的传输只要对传过来的byte处理好就可以. 但是在supersocket上,我却花费了很长的时间.原因如下: 1. ...

  4. 【转】深入理解Android中的SharedPreferences

    SharedPreferences作为Android中数据存储方式的一种,我们经常会用到,它适合用来保存那些少量的数据,特别是键值对数据,比如配置信息,登录信息等.不过要想做到正确使用SharedPr ...

  5. Android中的SharedPreferences存储

    一.前言 不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的.也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把 ...

  6. HTTP学习二:Web应用中的HTTP

    1 HTTP连接 1.1 TCP连接对性能的影响 TCP三次握手如下图: 如上图,建立一次TCP连接要经过三个步骤.HTTP是建立在TCP之上的,因此TCP连接的性能直接影响HTTP的性能. TCP影 ...

  7. Android入门(九)文件存储与SharedPreferences存储

    原文链接:http://www.orlion.ga/578/ Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储.SharedPreference存储以及数据库存储.当然, ...

  8. Android源码分析之SharedPreferences

    在Android的日常开发中,相信大家都用过SharedPreferences来保存用户的某些settings值.Shared Preferences 以键值对的形式存储私有的原生类型数据,这里的私有 ...

  9. c#中序列化

    序列化(Serialization)是.NET平台的特性之一.1.为什么要序列化:首先你应该明白系列化的目的就不难理解他了.系列化的目的就是能在网络上传输对象,否则就无法实现面向对象的分布式计算.比如 ...

随机推荐

  1. Xctf-easyapk

    Xctf-easyapk Write UP 前期工作 查壳 无壳 运行 没什么特别的 逆向分析 使用jadx反编译查看代码 先看看文件结构 MainActivity代码 public class Ma ...

  2. Tomcat优化,JNDI,连接池,数据源

    什么是JNDI? JNDI的简单应用 什么是连接池技术? 连接池 性能 连接池技术与传统数据库连接的比较 连接池技术工作原理 为什么使用连接池? 传统数据库连接方式的不足 企业级开发需要稳健和高效的数 ...

  3. 希尔伯特曲线python3实现

    需要OpenGL库:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl #coding:utf-8 from OpenGL.GL import * ...

  4. Openstack (keystone 身份认证)

    keystone简介 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等.云 ...

  5. 从微信小程序到鸿蒙js开发【05】——tabs组件&每日新闻

    目录: 1.tabs, tab-bar, tab-content 2.tabs的事件处理 3.tabs实现的每日新闻 1.tabs, tab-bar, tab-content 上章说到,鸿蒙的list ...

  6. java面试必备String详解

    引言 众所周知在java里面除了8种基本数据类型的话,还有一种特殊的类型String,这个类型是我们每天搬砖都基本上要使用它. String 类型可能是 Java 中应用最频繁的引用类型,但它的性能问 ...

  7. zookper投票机制

    前提:已经搭建好zookper集群 1.先开启编号为01的服务器 2.开启编号为02的服务器,状态为leader,编号为01的变成follower 3.开启编号为03的服务器,状态为follower ...

  8. Codeforces Round #638 (Div. 2)

    Contest Info Practice Link Solved A B C D E F 4/6 O O Ø  Ø     O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Sol ...

  9. AtCoder Beginner Contest 176

    比赛链接:https://atcoder.jp/contests/abc176 A - Takoyaki #include <bits/stdc++.h> using namespace ...

  10. Codeforces Round #171 (Div. 2) B. Books (模拟队列)

    题意:有一组数,问子数组和最大不超过\(t\)的最多元素个数. 题解:用数组模拟队列,不断的往里面放,队列中的元素之和大于\(t\),就不断地从队头弹出直到满足条件,维护一个最大值即可. 代码: in ...