1

4 つの String[] 配列を保存する簡単な方法を何週間も何度も検索しました。それらを Set に変換して SharedPref に保存しようとしましたが、うまくいかないようです。outputStream にも出くわしましたが、良い例は見つかりませんでした。

次の4つのピースを保存したい:

String[] debtName = new String[10];
String[] debtAmount = new String[10];
String[] debtRate = new String[10];
String[] debtPayment = new String[10];

情報は、インテントを介して別のアクティビティからこのアクティビティに渡されています。

これらを内部的に保存するための簡単な提案を提供してください。

4

2 に答える 2

1

これらの配列は、カンマ区切りの値を持つ文字列に変換して保存し、それらを共有設定に保存できます。お気に入り :

private void putToSharedPref(String[] array, String key, Context context) {
    StringBuilder value = new StringBuilder("");
    for (String i : array) {
        value.append(i + ",");
    }
    SharedPreferences.Editor editor = PreferenceManager
            .getDefaultSharedPreferences(context).edit();
    editor.putString(key, value.toString());
    editor.commit();
}

private String[] getFromSharedPreference(String key, Context context) {
    String[] values = PreferenceManager
            .getDefaultSharedPreferences(context).getString(key, "")
            .split(",");
    return values;
}
于 2013-11-04T05:17:26.403 に答える
1
JSONArray mJSONArray = new JSONArray(Arrays.asList(debtName));

JSONSharedPreferences.saveJSONArray(this.getApplicationContext(), "prefName", "prefKey", mJSONArray);

使用すると、データを JSON 配列として保存できます。

public class JSONSharedPreferences {
    private static final String PREFIX = "json";

    public static void saveJSONObject(Context c, String prefName, String key, JSONObject object) {
        SharedPreferences settings = c.getSharedPreferences(prefName, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString(JSONSharedPreferences.PREFIX+key, object.toString());
        editor.commit();
    }

    public static void saveJSONArray(Context c, String prefName, String key, JSONArray array) {
        SharedPreferences settings = c.getSharedPreferences(prefName, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString(JSONSharedPreferences.PREFIX+key, array.toString());
        editor.commit();
    }

    public static JSONObject loadJSONObject(Context c, String prefName, String key) throws JSONException {
        SharedPreferences settings = c.getSharedPreferences(prefName, 0);
        return new JSONObject(settings.getString(JSONSharedPreferences.PREFIX+key, "{}"));
    }

    public static JSONArray loadJSONArray(Context c, String prefName, String key) throws JSONException {
        SharedPreferences settings = c.getSharedPreferences(prefName, 0);
        return new JSONArray(settings.getString(JSONSharedPreferences.PREFIX+key, "[]"));
    }

    public static void remove(Context c, String prefName, String key) {
        SharedPreferences settings = c.getSharedPreferences(prefName, 0);
        if (settings.contains(JSONSharedPreferences.PREFIX+key)) {
            SharedPreferences.Editor editor = settings.edit();
            editor.remove(JSONSharedPreferences.PREFIX+key);
            editor.commit();
        }
    }

}
于 2013-11-04T06:43:34.817 に答える