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.为什么要序列化:首先你应该明白系列化的目的就不难理解他了.系列化的目的就是能在网络上传输对象,否则就无法实现面向对象的分布式计算.比如 ...
随机推荐
- JavaScript 类型、原型与继承学习笔记
目录 一.概览 二.数据类型 1. JavaScript中的数据类型 2. 什么是基本类型(Primitive Data Type) 2.1 概念 2.2 七个基本类型 2.3 基本类型封装对象 3. ...
- 函数式编程(logging日志管理模块)
本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...
- c++指针 c指针 改变值
1. #include <iostream>using namespace std;void move(int *p) ====>void move(*&p){ ...
- python模块----yagmail模块、smtplib模块 (电子邮件)
yagmail模块 python标准库发送电子邮件的模块比较复杂,so,许多开源的库提供了更加易用的接口来发送电子邮件,其中yagmail是使用比较广泛的开源项目,yagmail底层依然使用smtpl ...
- CCF-有趣的数(数位DP)
有趣的数 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前 ...
- P3128 [USACO15DEC]最大流Max Flow (树上差分)
题目描述 Farmer John has installed a new system of N-1N−1 pipes to transport milk between the NN stalls ...
- Codeforces Round #666 (Div. 2) Power Sequence、Multiples of Length 思维
题目链接:Power Sequence 题意: 给你n个数vi,你可以对这个序列进行两种操作 1.可以改变其中任意个vi的位置,无成本 2.可以对vi进行加1或减1,每次操作成本为1 如果操作之后的v ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) A. Prison Break
题意:有一张\(n\)x\(m\)的图,图中每个点都关押着罪犯,在坐标\((r,c)\)处有一个出口,每名罪犯每秒可以可以像上下最有移动一个单位或者不动,问所有罪犯能够逃离监狱的最少时间. 题解:直接 ...
- hdu5247 找连续数
Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否能找到一个k 的区间,里面的 k 个数字排完序后是连续的. 现在小度熊增加题目难度,他不想知道是否有这 ...
- Codeforces Round #565 (Div. 3) C. Lose it! (思维)
题意:给你一串只含\(4,8,15,16,23,42\)的序列,如果它满足长度是\(6\)的倍数并且有\(\frac {k}{6}\)个子序列是\([4,8,15,16,23,42]\),则定义它是好 ...