0

私のAndroidアプリには、Stackを拡張するStringsのカスタムスタックがあります。スタックをSharedpreferencesに保存し、SharedPreferencesから取得したいと思います。

スタックをArrayListに変換する方法は知っていますが、SharedPreferencesはリストではなくセットのみをサポートしていることを読みました。では、順序を維持しながらスタックをSPに保存するにはどうすればよいですか?そして、SharedPreferencesからそれを取得してスタックを再構築するにはどうすればよいですか?

私はこれにどのようにアプローチするかについて本当に迷っています。正しい方向へのポインタは高く評価されています-私はコードダンプの答えを求めていません。

4

2 に答える 2

1

以前のコメントによると:

おそらく、を文字列表現にシリアル化/逆シリアル化するStack必要があります。文字列表現は、に格納できますSharedPreferences

これにjson形式を(ab)使用することは可能かもしれませんが、結果の個々の要素の順序については保証されません。ただし、すべての要素に「位置」を含めるのは簡単なはずです。これを使用して、逆シリアル化後に要素を並べ替えることができます。

または、独自の構造を考え出すこともできます。

于 2013-01-04T08:20:55.547 に答える
1

これが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 に答える