android spf 存储 集合(实体等)
package com.example.sharedpreferencelist;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OptionalDataException;
import java.io.StreamCorruptedException;
import java.util.ArrayList;
import java.util.List;
import android.util.Base64;
public class Utils {
public static String SceneList2String(ArrayList SceneList) {
System.out.println("SceneList 长度///:"+SceneList.size());
// 实例化一个ByteArrayOutputStream对象,用来装载压缩后的字节文件。
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = null;
try {
// 然后将得到的字符数据装载到ObjectOutputStream
objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
} catch (IOException e) {
System.out.println("字符数据装载到ObjectOutputStream 出错。。。");
e.printStackTrace();
}
try {
// writeObject 方法负责写入特定类的对象的状态,以便相应的 readObject 方法可以还原它
objectOutputStream.writeObject(SceneList);
} catch (IOException e) {
System.out.println("writeObject 写入特定类的对象的状态出错。。。");
e.printStackTrace();
}
// 最后,用Base64.encode将字节文件转换成Base64编码保存在String中
String SceneListString = new String(Base64.encode(
byteArrayOutputStream.toByteArray(), Base64.DEFAULT));
try {
objectOutputStream.close();// 关闭objectOutputStream
} catch (IOException e) {
e.printStackTrace();
}
return SceneListString;
}
@SuppressWarnings("unchecked")
public static List String2SceneList(String SceneListString) {
byte[] mobileBytes = Base64.decode(SceneListString.getBytes(),
Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
mobileBytes);
ObjectInputStream objectInputStream = null;
try {
objectInputStream = new ObjectInputStream(byteArrayInputStream);
} catch (StreamCorruptedException e) {
System.out
.println("objectInputStream StreamCorruptedException异常 出错。。。");
e.printStackTrace();
} catch (IOException e) {
System.out.println("objectInputStream IOException异常 出错。。。");
e.printStackTrace();
}
List SceneList = null;
try {
SceneList = (List) objectInputStream.readObject();
} catch (OptionalDataException e) {
System.out.println("SceneList OptionalDataException异常 出错。。。");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("SceneList ClassNotFoundException异常 出错。。。");
e.printStackTrace();
} catch (IOException e) {
System.out.println("SceneList IOException异常 出错。。。");
e.printStackTrace();
}
try {
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return SceneList;
}
}
//下面是具体的用法
findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//储存
ArrayList<String> list = new ArrayList<String>();
list.add("1111");
list.add("2222");
list.add("3333");
list.add("4444");
SharedPreferences mySharedPreferences = getSharedPreferences("userlist", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = mySharedPreferences.edit();
String liststr = Utils.SceneList2String(list);
edit.putString("userinfo", liststr);
edit.commit();
}
});
//得到
findViewById(R.id.get).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("userlist", Context.MODE_PRIVATE);
String liststr = sharedPreferences.getString("userinfo", "");
ArrayList<String> showSceneList = (ArrayList) Utils.String2SceneList(liststr);
for (String a : showSceneList) {
Log.i("数据",a);
}
}
});
android spf 存储 集合(实体等)的更多相关文章
- Android数据存储之GreenDao 3.0 详解
前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...
- Android SharedPreferences存储
原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SharedPreferences.html 一 概念 SharedPreferen ...
- Android数据存储——SQLite数据库(模板)
本篇整合Android使用数据库,要保存一个实体类的样本. 首先看一下数据库语句: ORM:关系对象映射 添加数据: ContentValues values = new ContentValues( ...
- 【Android开发日记】之入门篇(八)——Android数据存储(下)
废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...
- Android数据存储之Android 6.0运行时权限下文件存储的思考
前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- Android数据存储方式--SharedPreferences
Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...
- Android 媒体存储服务(二)
Android 媒体存储服务 简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套 ...
- Android 媒体存储服务(一)
Android 媒体存储服务 本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner.MediaProvider以及媒体信息解析等部分),包括如何把 ...
随机推荐
- javascript 之 面向对象【理解对象】
第五版本 6.1.1 属性类型 1/数据属性 :包含有数据值的问题.有内部有特性和属性,是为了实现javaScript引擎用的,在javaScript中不能直接访问 [[Configur ...
- java中==和equals的区别(转)
java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(== ...
- c++_day5_成员指针
1.成员指针实质:特定成员变量在对象实例中的相对地址. 2.类内可以直接初始化静态常量(声明部分).
- MATLAB 实时脚本(live-script)使用
在matlab2016a及以上的版本不建议安装notebook来编写实施脚本,以为之后的matlab里面会有live-script,他可以创建实施脚本,使脚本与方便操作.那么这个live script ...
- postman(十一):添加cookie
有些接口在调用时,需要提供权限,如下 这个时候可以通过添加cookie的方式跳过验证 为了更方便地获取cookie等信息,可以在chrome中安装一个插件:Postman Interceptor,配合 ...
- [GXOI/GZOI2019]旅行者
就我感觉这道题很神仙吗/kel 仔细想想应该也是一种适用范围挺广的做法. 考虑我们可以通过dijkstra在O(nlogn)求出一个点集到另外一个点集的最短路. 那么我们可以通过一些划分点集的方式使得 ...
- 第八届 蓝桥杯 7、正则问题 dfs
描述:正则问题 考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达式.小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串 ...
- java中JScrollPane不显示水平滚动条的解决办法
在JPanel中添加了表格,表格中对东西太多,需要水平滚动条滑动才能够完全找到所有数据,如果没有水平滚动条的话,数据堆积在一起,无法分开 做法是: 第一步:先将表格自动调整的状态给关闭掉:table. ...
- jquery源码解读
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐进增强)优雅的处理能 ...
- Struts 2中如何解决中文乱码问题?
在配置文件中定义如下常量值配置: <constant name=”struts.i18n.encoding” value=”UTF-8”/> 注意:只能解决post请求的乱码问题,针对ge ...