как добавить новую карту или строку в файл sharedpreferences - PullRequest
1 голос
/ 11 марта 2020

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

Когда я проверил файл sharedpref в его местоположении после добавления новых данных, я обнаружил, что обновляется та же карта, и не добавил новую карту (или строку)

MainActivity .kt

 //start sharedpreference to save data
    val sharedPrefFile = "goldinvesto"  //filename to save
    val collectdata:SharedPreferences = this.getSharedPreferences(sharedPrefFile, Context.MODE_PRIVATE)
    val editor:SharedPreferences.Editor=collectdata.edit()

         editor.putString("start_date",save_date)
         editor.putString("amount",save_amount_txt)
         editor.putString("currency",spin.selectedItem.toString())
         editor.putString("karat",spin2.selectedItem.toString())
         editor.putString("enter_price",save_enter_price)
         editor.apply()
         editor.commit()

Расположение файла общего доступа: enter image description here

Ответы [ 2 ]

1 голос
/ 11 марта 2020

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

editor.putString("start_date_1",save_date_1)
editor.putString("amount_1",save_amount_txt_1)
editor.putString("currency_1",spin.selectedItem_1.toString())
editor.putString("start_date_2",save_date_2)
editor.putString("amount_2",save_amount_txt_2)
editor.putString("currency_2",spin.selectedItem_2.toString())
editor.putString("start_date_3",save_date_3)
editor.putString("amount_3",save_amount_txt_3)
editor.putString("currency_3",spin.selectedItem_3.toString())

и т. Д., Но это плохая практика храните большой объем данных в общих настройках, и вы должны использовать sqlite или room или хранить свои данные в файлах

1 голос
/ 11 марта 2020

Вы не можете сделать это в SharedPreferences, потому что это файл, основанный на одной карте с ключом / значениями.

Вы должны использовать базу данных, с SQLite, Room, et c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...