API 11'den sonra SharedPreferences Editorkabul edin Sets. Listenizi HashSetbenzer bir şeye veya benzer bir şeye dönüştürebilir ve böyle depolayabilirsiniz. Tekrar okuduğunuzda, onu bir dönüştürün ArrayList, gerekirse sıralayın ve gitmekte fayda var.
//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();
Ayrıca serileştirebilir ArrayListve sonra / dan kaydedebilir / okuyabilirsiniz SharedPreferences. Çözüm aşağıdadır:
EDIT:
Tamam, aşağıda ArrayListseri hale getirilmiş nesne olarak kaydetmek SharedPreferencesve SharedPreferences onu okumak için bir çözümdür .
API yalnızca dizelerin SharedPreferences'e / onlardan (API 11'den sonra, daha basit) depolanmasını ve alınmasını desteklediğinden, görevler listesini içeren ArrayList nesnesini diziye serileştirmeli ve serileştirmeyi kaldırmalıyız.
Gelen addTask()TaskManagerApplication sınıfının yöntemine paylaştığımız tercih örneğini almak ve daha sonra kullanarak tefrika ArrayList depolamak zorunda putString()yöntemi:
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();
}
Benzer şekilde onCreate()yöntemlerin tercihinden görevlerin listesini almak zorundayız :
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();
}
}
ObjectSerializerApache Pig projesinden ObjectSerializer.java'dan ders alabilirsiniz