Dopo l'API 11, SharedPreferences Editor
accetta Sets
. Puoi convertire il tuo Elenco in HashSet
qualcosa o qualcosa di simile e salvarlo in quel modo. Quando lo rileggi, convertilo in un ArrayList
, ordinalo se necessario e sei a posto.
//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();
Puoi anche serializzare il tuo ArrayList
e quindi salvarlo / leggerlo su / da SharedPreferences
. Di seguito è la soluzione:
EDIT:
Ok, di seguito è la soluzione per salvare ArrayList
come oggetto serializzato SharedPreferences
e quindi leggerlo da SharedPreferences.
Poiché l'API supporta solo l'archiviazione e il recupero di stringhe da / verso SharedPreferences (dopo API 11, la sua più semplice), dobbiamo serializzare e deserializzare l'oggetto ArrayList che ha l'elenco di attività in stringa.
Nel addTask()
metodo della classe TaskManagerApplication, dobbiamo ottenere l'istanza della preferenza condivisa e quindi archiviare ArrayList serializzato usando il putString()
metodo:
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();
}
Allo stesso modo dobbiamo recuperare l'elenco delle attività dalla preferenza nel onCreate()
metodo:
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();
}
}
Puoi ottenere ObjectSerializer
lezioni dal progetto Apache Pig ObjectSerializer.java