配列をアプリ設定に保存する方法

SharedPreferenceを使うとアプリ設定をXML形式で簡単に保存できます。

しかし、プリファランスで保存できるデータの種類はintやStringなどのプリミティブ型に限り、配列そのものは記録できません。

そこで配列を文字列として保存するのにJSONArrayというJSON形式で配列を扱うクラスを使います。

まず保存の仕方はこうです。

prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefsEditor = prefs.edit();

JSONArray array = new JSONArray();
try {
    array.put("one");
    array.put("two");
    array.put("three");
    prefsEditor.putString("ARRAY_KEY", array.toString());
    prefsEditor.commit();
} catch (JSONException e) {
    e.printStackTrace();
}

JSONArrayは次のような文字列で記録されます。

["one","two","three"]

値の読み出し

値を記録したら、今度はそれを読みだしてみます。

コードは例えばこうします。

JSONArray array = new JSONArray(
    prefs.getString("ARRAY_KEY", new JSONArray().toString()));
int arrayLength = array.length();
for(int i = 0; i < arrayLength; ++i){
    try {
        Log.d("MainActivity", "値" + i + " = " + array.getString(i));
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

このように文字列からJSONArrayを再構築して1つ1つ要素を取り出せばOKです。

ここでは要素に文字列を保存していますが、もちろん文字列以外の数値や他の配列も含めることができます。

以上JSONArrayを使った配列の保存でした。

関連項目
プライバシーポリシー