Общие предпочтения: Сохранить в ListView
У меня нет проблем, чтобы сохранить список в sharedpreferences и показать его в виде списка, но моя проблема в том, когда я перезагружаю приложение и пытаюсь добавить элементы в просмотр списка, старые сохраненные элементы удалены. есть мой код:
public void SaveDatesToList(){
list.add(i+"");
array = new String[list.size()];
list.toArray(array);
tinyDB.putListString("DATES",list);
}
public void getDates () {
for (String str:tinyDB.getListString("DATES")) {
list.add(str);
}
2 ответа
Пожалуйста, попробуйте этот аррлист из двух хранилищ функций и извлеките их в sharedprefrence
private void storeArray() {
ArrayList<String> arr1 = new ArrayList<>();
SharedPreferences prefs = this.getSharedPreferences("Demo", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
arr1.add("A");
arr1.add("B");
arr1.add("C");
arr1.add("D");
arr1.add("E");
Set<String> set = new HashSet<String>();
set.addAll(arr1);
edit.putStringSet("yourKey", set);
edit.commit();
}
private void retriveArray() {
SharedPreferences prefs = this.getSharedPreferences("Demo", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
Set<String> set = prefs.getStringSet("yourKey", null);
ArrayList<String> sample = new ArrayList<String>(prefs.getStringSet("yourKey", null));
Log.d("Check Size", "Check Size" + sample.size());
if (sample.size() > 0) {
for (int i = (sample.size() - 1); i >= 0; i--) {
Log.d("Array Value", "Array Value" + sample.get(i));
}
}
}
Проблема в том, что вы продолжаете перезаписывать старые данные, потому что вы, вероятно, не извлекаете старые данные и не добавляете в них новые данные.
Получить ваши старые данные из SharedPreference
и объедините их с вашим новым ArrayList. Затем сохраните объединенный ArrayList.
Пример объединения ArrayList<String>
ArrayList<String> first = new ArrayList<String>();
ArrayList<String> second = new ArrayList<String>();
//Let both arraylists have some data
first.add("data1");
second.add("data2");
// now first contains "data1" and "data2"
first.addAll(second);
Теперь ArrayList first
есть все данные. И например сделать
editor.putStringSet("KEY", first).apply();