Після API 11 SharedPreferences Editor
прийміть Sets
. Ви можете перетворити свій Список у HashSet
щось подібне та зберігати його так. Коли ви прочитаєте його назад, перетворіть його в ArrayList
, відсортуйте, якщо потрібно, і ви готові йти.
//Retrieve the values
Set<String> set = myScores.getStringSet("key", null);
//Set the values
Set<String> set = new HashSet<String>();
set.addAll(listOfExistingScores);
scoreEditor.putStringSet("key", set);
scoreEditor.commit();
Ви також можете серіалізувати своє, ArrayList
а потім зберегти / прочитати його в / з SharedPreferences
. Нижче наведено рішення:
EDIT:
Гаразд, нижче - рішення зберегти ArrayList
як серіалізований об’єкт SharedPreferences
і потім прочитати його з SharedPreferences.
Оскільки API підтримує лише зберігання та вилучення рядків до / з SharedPreferences (після API 11, його простіше), ми повинні серіалізувати та десериалізувати об’єкт ArrayList, який містить список завдань у рядок.
У addTask()
методі класу TaskManagerApplication ми повинні отримати екземпляр спільного уподобання та зберігати серіалізований ArrayList за допомогою putString()
методу:
public void addTask(Task t) {
if (null == currentTasks) {
currentTasks = new ArrayList<task>();
}
currentTasks.add(t);
// save the task list to preference
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
Editor editor = prefs.edit();
try {
editor.putString(TASKS, ObjectSerializer.serialize(currentTasks));
} catch (IOException e) {
e.printStackTrace();
}
editor.commit();
}
Аналогічно ми маємо отримати список завдань з уподобань у onCreate()
методі:
public void onCreate() {
super.onCreate();
if (null == currentTasks) {
currentTasks = new ArrayList<task>();
}
// load tasks from preference
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
try {
currentTasks = (ArrayList<task>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>())));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
Ви можете отримати ObjectSerializer
клас у проекту Apache Pig ObjectSerializer.java