android 保存list对象,android 保存ArrayList至SharedPreferences

释放双眼,带上耳机,听听看~!

今天,简单讲讲如何保持ArrayList到SharedPreferences。

之前讲了保持ArrayList到SharedPreferences的内容,但是如果集合里是类的话,怎么保持到SharedPreferences呢?

在网上找到两种代码。

一.将list转为json进行保存。

1 首先将自定义对象序列化

public class CoordinateAlterSample implements Serializable {

private double x;

private double y;

private String name;

public double getX() {

return x;

}

public void setX(double x) {

this.x = x;

}

public double getY() {

return y;

}

public void setY(double y) {

this.y = y;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

其次,将list转为json,即可保存到SharedPreferences中

List alterSamples = new ArrayList();

SharedPreferences.Editor editor = getSharedPreferences("AlterSamplesList", MODE_PRIVATE).edit();

Gson gson = new Gson();

String json = gson.toJson(alterSamples);

Log.d(TAG, "saved json is "+ json);

editor.putString("alterSampleJson", json);

editor.commit();

对应的取出操作为:

SharedPreferences preferences = getSharedPreferences("AlterSamplesList", MODE_PRIVATE);

String json = preferences.getString("alterSampleJson", null);

if (json != null)

{

Gson gson = new Gson();

Type type = new TypeToken>(){}.getType();

List alterSamples = new ArrayList();

alterSamples = gson.fromJson(json, type);

for(int i = 0; i < alterSamples.size(); i++)

{

Log.d(TAG, alterSamples.get(i).getName()+":" + alterSamples.get(i).getX() + "," + alterSamples.get(i).getY());

}

}

这里用到了Gson 的jar包,可以自己下载一下。

二.将数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中

需要用到:commons-codec-1.4.jar

AddNewWord addWord=new AddNewWord();

addWord.setWords(word.getWords());

addWord.setWordClass(i);

SharedPreferences mySharedPreferences=getSharedPreferences("new_word", Activity.MODE_WORLD_READABLE);

ByteArrayOutputStream baos = new ByteArrayOutputStream(3000);

ObjectOutputStream oos=null;

try {

oos = new ObjectOutputStream(baos);

oos.writeObject(addWord);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 将Product对象放到OutputStream中

// 将Product对象转换成byte数组,并将其进行base64编码

String newWord = new String(Base64.encodeBase64(baos.toByteArray()));

SharedPreferences.Editor editor = mySharedPreferences.edit();

// 将编码后的字符串写到base64.xml文件中

editor.putString("newWord", newWord);

editor.commit();

读取对象:

String wordBase64 = mySharedPreferences.getString("new_word", "");

// 对Base64格式的字符串进行解码

byte[] base64Bytes = Base64.decodeBase64(wordBase64 .getBytes());

ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);

ObjectInputStream ois = new ObjectInputStream(bais);

// 从ObjectInputStream中读取Product对象

AddNewWord addWord= (AddNewWord ) ois.readObject();

对象实体:

public class AddNewWord implements Serializable{

private static final long serialVersionUID = -37782648386953312L;

private String words;

private int wordClass;

public String getWords() {

return words;

}

public void setWords(String words) {

this.words = words;

}

public int getWordClass() {

return wordClass;

}

public void setWordClass(int wordClass) {

this.wordClass = wordClass;

}

@Override

public String toString() {

return "AddNewWord [words=" + words

+ ", wordClass=" + wordClass

+ "]";

}

}

这里的做法和List一样,将list的数据按照一定的顺序存放,然后按照相同的顺序读取。具体可以看我写的关于存贮list的博客。

android 保存ArrayList至SharedPreferences就讲完了。

就这么简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值