web-dev-qa-db-ja.com

SharedPreferencesに配列リストオブジェクトを保存する

このメソッドは、ArrayListに新しいオブジェクトを追加します

//get text from textview
time = date.getText().toString();
entry_d = entry.getText().toString();
dayName = day.getText().toString();

arrayList.add( new ArrayObject( dayName, entry_d ,time));

これら3つの文字列をSharedPrefrencesに追加しようとしています。ここに私のコードがあります:

private void savePreferences(String key, String value) {

    SharedPreferences sharedPreferences = PreferenceManager             
                                     .getDefaultSharedPreferences(this);
    Editor editor = sharedPreferences.edit();
    editor.putBoolean(key, value);
    editor.commit();
}

このメソッドは一度に1つの文字列のみを追加しますが、一度に3つの文字列を追加する必要があります。実装できる方法はありますか。

18
usrNotFound

Gsonライブラリを使用して配列またはオブジェクトをJsonに変換し、データをjson形式の文字列として保存します。

セーブ;

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = sharedPrefs.edit();
Gson gson = new Gson();

String json = gson.toJson(arrayList);

editor.putString(TAG, json);
editor.commit();

読んだ;

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
Gson gson = new Gson();
String json = sharedPrefs.getString(TAG, "");
Type type = new TypeToken<List<ArrayObject>>() {}.getType();
List<ArrayObject> arrayList = gson.fromJson(json, type);
69
Sinan Kozak

共有設定を使用してArraylistを保存

SharedPreferences prefs=this.getSharedPreferences("yourPrefsKey",Context.MODE_PRIVATE);
Editor edit=prefs.edit();

Set<String> set = new HashSet<String>();
set.addAll(your Arraylist Name);
edit.putStringSet("yourKey", set);
edit.commit();

共有設定から配列リストを取得

Set<String> set = prefs.getStringSet("yourKey", null);
List<String> sample=new ArrayList<String>(set);

これにはHashsetを使用しないでください。 Arraylistの順序を変更します。代わりにGsonを使用してください。 Hashsetを使用する場合は、リソースを占有するシリアル化および非シリアル化する必要があります。