9

特定の文字列を保存するたびにその配列に格納する方法で、共有設定に文字列の配列を保存できるかどうか疑問に思いました。

たとえば、お気に入りとしてマークしたい特定のIDを持つ場所のリストがあります。理想的な状況は、配列を持ち、その配列に特定のロケーションID(Location1と呼びましょう)を保存することです。次に、新しいロケーションをお気に入りとしてマークしたい場合(Location2と呼びます)、その配列を取得します(これをLocation2と呼びます)。これまでのところ、Location1)が含まれており、追加するこの新しい場所のID(Location2)を追加します。

Androidにはプリミティブオブジェクトを格納するメソッドがありますが、配列にはありません。これを行うためのアイデアはありますか?

4

3 に答える 3

23

これは実行可能です:私はそれについてブログを書いていました:

アレイを保存

//String array[]
//SharedPreferences prefs
Editor edit = prefs.edit();
edit.putInt("array_size", array.length);
for(int i=0;i<array.length; i++)
    edit.putString("array_" + i, array[i]);
edit.commit();

アレイを取得する

int size = prefs.getInt("array_size", 0);
array = new String[size];
for(int i=0; i<size; i++)
    prefs.getString("array_" + i, null);

書いただけなので誤字脱字があるかもしれません。

于 2012-05-30T09:55:09.190 に答える
15

配列を JSON 配列にして、次のように保存できます。

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0);
SharedPreferences.Editor editor = settings.edit();

JSONArray jArray = new JSONArray();
try {
    jArray.put(id);
} catch (JSONException e) {
    e.printStackTrace();
}

editor.putString("jArray", jArray.toString());
editor.commit();

次に、次のように配列を取得できます。

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0);
try {
    JSONArray jArray = new JSONArray(settings.getString("jArray", ""));
} catch (JSONException e) {
    e.printStackTrace();
}

私が過去に使用した単なる代替ソリューション

于 2013-08-02T22:49:22.827 に答える
1

シリアル化された配列を読み書きするメソッドを記述します。これはそれほど難しくないはずです。文字列の配列を、設定に保存する単一の文字列にフラット化するだけです。もう 1 つのオプションは、配列を XML 構造に変換してから設定に保存することですが、それはおそらくやり過ぎです。

于 2012-05-30T09:53:40.353 に答える