如何将Stack保存到SharedPreferences?

时间:2013-01-04 03:02:26

标签: java android stack

在我的Android应用中,我有一个自定义堆栈,用于扩展Stack。我想将堆栈保存到Sharedpreferences,并从SharedPreferences中检索它。

我知道如何将堆栈转换为ArrayList但我已经读过,SharedPreferences只支持集合而不是列表。那么如何在保留订单的同时将堆栈保存到SP呢?如何从SharedPreferences中检索它并重建堆栈?

我真的迷失了如何处理这个问题。任何指向正确方向的人都非常感激 - 我不是要求代码转储答案。

2 个答案:

答案 0 :(得分:1)

这是一种可能的解决方案,

您可以通过序列化将堆栈转换为字符串,并将字符串保存为共享首选项

ByteArrayOutputStream bos = new ByteArrayOutputStream()
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(stack);
oos.flush();
String base64str = Base64.encode(bos.toByteArray(), Base64.DEFAULT);
...

从首选项加载字符串时,将base64字符串解码为字节,并使用ObjectInputStream对字符串进行反序列化。

答案 1 :(得分:1)

根据之前的评论:

您可能必须将Stack序列化/反序列化为字符串表示形式,然后可以将其存储在SharedPreferences中。

有可能(ab)使用json格式,但它不保证结果中各个元素的排序。它应该很容易包含每个元素的“位置”,然后您可以在反序列化后使用它来对元素进行排序。

或者,您可以提出自己的结构。