API 11'den sonra SharedPreferences Editor
kabul edin Sets
. Listenizi HashSet
benzer 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 ArrayList
ve sonra / dan kaydedebilir / okuyabilirsiniz SharedPreferences
. Çözüm aşağıdadır:
EDIT:
Tamam, aşağıda ArrayList
seri hale getirilmiş nesne olarak kaydetmek SharedPreferences
ve 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();
}
}
ObjectSerializer
Apache Pig projesinden ObjectSerializer.java'dan ders alabilirsiniz