Хранить общие настройки данных json и не перезаписывать

я создаю приложение, в котором, когда пользователь добавляет новые данные, появляется новая метка Я пробовал, и это сработало, но мне интересно, как я могу сделать json, который я храню в SharedPreferences не переписывайте поэтому я могу добавить 2 или более пользовательских json в адаптер

Вот мой файл строки ввода, переменная json содержит пользователя, который добавил

 SharedPreferences sharedPreferences = getSharedPreferences("newUser", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString("listNewUser",json)
    editor.apply();

Вот как я могу получить json из общих настроек

 try{
                String listNewUserAdd = sh.getString("listNewUser","");
                JSONObject object = new JSONObject(listNewUserAdd);
                for (int i=0; i<object.length(); i++) {

                    CustomerNew customer = new CustomerNew();
                    customer.setCustomerName(object.getString("receiverName"));
                    customer.setAccountId(object.getString("customerReference"));
                    customer.setId(object.getLong("customerId"));
                    System.out.println("### GET CUSTOMER NAME "+customer.getCustomerName());
                    listSortNew.add(customer);
                    if (listSortNew == null) {
                        // if the array list is empty
                        // creating a new array list.
                        listSortNew = new ArrayList<>();
                    }
            }
0
0
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что есть два способа реализовать это. Один из способов — когда вы помещаете данные, вы должны проверить, существуют ли они.

SharedPreferences sharedPreferences = getSharedPreferences("newUser", MODE_PRIVATE);
String listNewUser = sharedPreferences.getString("listNewUser","");
if (!TextUtils.isEmpty(listNewUser)){
   //covert it the list object
   //then add the all new item to it
   //finally convert it to json string
}
   SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString("listNewUser",json)
    editor.apply();

другой способ — изменить SharedPreferences MODE_APPEND

but you must know, it doesn't mean that you add multiple values for each key. It means that if the file already exists it is appended to and not erased. We usually used MODE_PRIVATE

В конце я предлагаю вам сначала получить данные из него, затем проверить, нужны ли вам изменения, вы можете изменить данные, а затем сохранить их снова.

спасибо, но я имею в виду, что каждый раз, когда я добавляю данные, значение json заменяется новыми добавленными данными

Agam 22.03.2022 06:28

@Agam, потому что для того же ключа, когда вы вводите новые данные, они заменяют старые данные,

Lenoarod 22.03.2022 06:32

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

Lenoarod 22.03.2022 06:33

можете привести пример?

Agam 22.03.2022 07:18

@Agam, я обновляю ответ и даю инструкции. вы можете это осознать.

Lenoarod 22.03.2022 08:22

Я правда не знаю как это сделать, но большое спасибо

Agam 23.03.2022 02:44

@Agam, основная идея состоит в том, чтобы использовать список для сохранения информации о данных, а не объект.

Lenoarod 23.03.2022 06:11

Другие вопросы по теме