Após a API 11, SharedPreferences Editoraceite Sets. Você pode converter sua lista em HashSetalgo semelhante e armazená-la assim. Quando você ler novamente, converta-o em um ArrayList, classifique-o se necessário e pronto.
//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();
Você também pode serializar seu ArrayListe salvar / ler de / para SharedPreferences. Abaixo está a solução:
EDIT:
Ok, abaixo está a solução para salvar ArrayListcomo objeto serializado SharedPreferencese, em seguida, lê-lo em SharedPreferences.
Como a API suporta apenas o armazenamento e a recuperação de strings de / para SharedPreferences (após a API 11, sua mais simples), precisamos serializar e desserializar o objeto ArrayList que possui a lista de tarefas na string.
No addTask()método da classe TaskManagerApplication, precisamos obter a instância da preferência compartilhada e, em seguida, armazenar o ArrayList serializado usando o putString()método:
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();
}
Da mesma forma, temos que recuperar a lista de tarefas da preferência no onCreate()método:
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();
}
}
Você pode obter ObjectSerializerclasse no projeto Object Apex Pig ObjectSerializer.java