Po API 11 SharedPreferences Editor
zaakceptuj Sets
. Możesz przekonwertować swoją listę na HashSet
coś podobnego i przechowywać ją w ten sposób. Po ponownym przeczytaniu przekonwertuj go na ArrayList
, posortuj w razie potrzeby i możesz zacząć.
//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();
Możesz także serializować swój, ArrayList
a następnie zapisać / odczytać go do / z SharedPreferences
. Poniżej znajduje się rozwiązanie:
EDYCJA:
Ok, poniżej znajduje się rozwiązanie, aby zapisać ArrayList
jako obiekt zserializowany, SharedPreferences
a następnie odczytać go z SharedPreferences.
Ponieważ API obsługuje tylko przechowywanie i pobieranie ciągów znaków do / z SharedPreferences (po API 11, jego prostsze), musimy serializować i usuń serializację obiektu ArrayList, który ma listę zadań w łańcuch.
W addTask()
metodzie klasy TaskManagerApplication musimy uzyskać instancję współużytkowanej preferencji, a następnie przechowywać zserializowaną ArrayList za pomocą putString()
metody:
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();
}
Podobnie musimy pobrać listę zadań z preferencji w onCreate()
metodzie:
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();
}
}
Możesz pobrać ObjectSerializer
klasę z projektu Apache Pig ObjectSerializer.java