0

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

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

我真的不知道如何处理这个问题。任何指向正确方向的指针都非常感谢 - 我不是在要求代码转储答案。

4

2 回答 2

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 反序列化堆栈。

于 2013-01-04T03:35:25.627 回答
1

根据之前的评论:

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

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

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

于 2013-01-04T08:20:55.547 回答