Сохранение объекта массива в SharedPreferences

Этот метод добавляет новый объект в список массивов

    //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();
}

Этот метод добавляет только одну строку за раз, когда я хочу добавить 3 строки за один раз. Есть ли какой-либо метод, который я могу реализовать.

Спасибо заранее.

Ответы

Ответ 1

Преобразуйте свой массив или объект в Json с библиотекой Gson и сохраните данные как String в формате 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, null);
Type type = new TypeToken<ArrayList<ArrayObject>>() {}.getType();
ArrayList<ArrayObject> arrayList = gson.fromJson(json, type);

Ответ 2

Сохранить 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();

Получить Arraylist из общих настроек

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

Ответ 3

Не используйте для этого Hashset. Это изменит порядок Arraylist. Используйте Gson. Если вы хотите использовать Hashset, вам придется сериализовать и десериализовать, что потребует ресурсов