Общие настройки Android предотвращают перезапись при хранении объекта - PullRequest
0 голосов
/ 21 марта 2019

Я использую общие настройки для сохранения строки в календарный день.У меня есть класс, который добавляет декоратор и сохраняет строку в выбранный день (строка из пользовательского ввода), и она отлично работает.Моя проблема возникает, когда я пытаюсь добавить новую дату, общие настройки перезаписываются (что ожидается).

Метод сохранения строки в календарный день

        final CalendarDay day1 = date;
                final ArrayList<CalendarDay> selectedEventDay = new ArrayList<>();
                for (int i = 0; i < 30; i++) {
                    selectedEventDay.add(day1);
            }
             String editedText = noteEditText.getText().toString();
                            CustomEventDay customEventDay = new CustomEventDay(editedText, selectedEventDay);
                            SharedPreferences.Editor prefsEditor = mPrefs.edit();
                            Gson gson = new Gson();
                            String json = gson.toJson(customEventDay);
                            prefsEditor.putString("CustomEventCal", json);
                            prefsEditor.apply();

Мне интересно, есть ли способ использовать этот же метод для сохранения новых данных для новой даты.В настоящее время, если пользователь выбирает другую дату, текущая дата сохраняется в общих настройках, и ее строка и связанный день перезаписываются данными новой даты.

1 Ответ

1 голос
/ 21 марта 2019

Даже если рекомендуемый способ в комментариях с использованием SQlite хорош, иногда вам нужно только небольшое количество данных, и тогда легче работать с общими настройками:

Так что, если количество событий останетсямаленький, вы можете начать использовать массив объектов, а затем снова использовать Gson:

Gson gson = new Gson();
List<CustomEventDay> events = // initialized with the content of your shared preferences
events.add(customEventDay);
String json = gson.toJson(events);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...