package org.emdev.common.settings.base; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class JsonArrayPreferenceDefinition extends BasePreferenceDefinition<JSONArray> { public JsonArrayPreferenceDefinition(final int keyRes) { super(keyRes); } @Override public JSONArray getPreferenceValue(final SharedPreferences prefs) { return getPreferenceValue(prefs, "[]"); } public JSONArray getPreferenceValue(final SharedPreferences prefs, final String defValue) { try { final String val = prefs.getString(key, defValue); return new JSONArray(val); } catch (final JSONException ex) { LCTX.e("Settings processing error: [" + key + "] " + ex.getMessage()); } return new JSONArray(); } public void setPreferenceValue(final Editor edit, final JSONArray value) { final String val = value != null ? value.toString() : "[]"; edit.putString(key, val); } @Override public void backup(final JSONObject root, final SharedPreferences prefs) throws JSONException { final JSONArray arr = getPreferenceValue(prefs); root.put(key, arr); } @Override public void restore(final JSONObject root, final Editor edit) throws JSONException { setPreferenceValue(edit, root.getJSONArray(key)); } }