У меня есть действие, которое берет дату с телефона и добавляет ее в список в наборе, который затем сохраняется в общих настройках с помощью нажатия кнопки.
//Loads data
final SharedPreferences sharedList = getSharedPreferences("Workouts", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedList.edit();
Set<String> set = sharedList.getStringSet("Workout List", null);
List list1 = new ArrayList(set);
list1.add(date);
//Creates new set with updated values and saves to the key
Set<String> set2 = new HashSet();
set2.addAll(list1);
editor.putStringSet("Workout List", set2);
editor.commit();
Я затем на отдельном activity загрузить эти данные для отображения в виде списка.
listView=findViewById(R.id.listView);
SharedPreferences sharedPref = getSharedPreferences("Workouts", Context.MODE_PRIVATE);
Set<String> set = sharedPref.getStringSet("Workout List", null);
List list1 = new ArrayList(set);
//Creates an array adapter for the arrayList
ArrayAdapter arrayAdapter=new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, list1);
//Sets the adapter to the listView so you can view the list on the page
listView.setAdapter(arrayAdapter);
У меня две проблемы с этим методом:
1: он загружает данные в неправильном порядке. Я сохранил сегодняшнюю дату, изменил дату телефона на завтра, сохранил это и повторил пару раз. Он отображает их в случайном порядке, а не в том порядке, в котором я их сохранил. Фотография списка
2: когда я запускаю приложение на своем реальном телефоне и нажимаю кнопку сохранения, приложение вылетает. Это происходит только тогда, когда на моем настоящем телефоне в эмуляторе все работает нормально.