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以及媒体信息解析等部分),包括如何把 ...
随机推荐
- 调用Bytom Chrome插件钱包开发Dapp
安装使用插件钱包 1. 打开Google浏览器的应用商店,搜索Bystore 下载链接:http://t.cn/E6cFFwb 2. 然后点击添加到Chrome,就可以添加到我们的: 3. 使用goo ...
- error LNK1169 找到一个或多个多重定义的符号的解决方法
问题描述如下: 有 三个源文件,A.h.B.cpp.C.cpp. A.h是头文件,其中声明了三个变量a1.a2. a3. B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件.B.cpp ...
- 用Python实现简单通讯录
一个简单的通讯录例子 #!/usr/bin/python __author__ = 'fierce' #coding:utf-8 import os #引用os模块 import pickle #应用 ...
- Phpstorm数组对齐设置
进入 Editor > Code Style > PHP > Wrapping and Braces , 勾选 Align consecutive assignments 和 Ali ...
- [原][杂谈]如果人类的末日:"天网"出现
本文由南水之源在2019年3月21日发布,转载需声明原作者 本文仅为一次基于科技发展与科幻小说的幻想,如果天网真的出现,请不要参考这篇逻辑破败的推论. 参考: 天网(Skynet),是电影<终结 ...
- Ketlle
public class Kettle { private int volume; public Kettle(int water) { volume =water; System.out.pri ...
- hdoj3251
这题告诉我们,最小割需:满流,S断不能到T端P4126,hdoj3987 #include <iostream> #include <cstdio> #include < ...
- android --- api json数据
「一个」.「Time 时光」.「开眼」.「一席」.「梨视频」.「微软必应词典」.「金山词典」.「豆瓣电影」.「中央天气」.「魅族天气」.「每日一文」.「12306」.「途牛」.「快递100」.「快递」 ...
- OSGI框架
面向Java的动态模型系统 OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能.为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方. ...
- 解决Git Revert操作后再次Merge代码被冲掉的问题
转:https://blog.csdn.net/paul_wei2008/article/details/77477932 https://blog.csdn.net/cxn945/article/d ...