एपीआई 11 के बाद SharedPreferences Editor
स्वीकार करते हैं Sets
। आप अपनी सूची को एक HashSet
या ऐसी ही किसी चीज़ में बदल सकते हैं और इसे उसी तरह स्टोर कर सकते हैं। जब आपका इसे वापस पढ़ा जाता है, तो इसे एक में परिवर्तित करें ArrayList
, यदि आवश्यक हो तो इसे क्रमबद्ध करें और आप जाने के लिए अच्छे हैं।
//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();
आप अपने को क्रमबद्ध भी कर सकते हैं ArrayList
और फिर उसे / से / से बचा सकते हैं SharedPreferences
। नीचे समाधान है:
संपादित करें:
ठीक है, नीचे के ArrayList
रूप में क्रमबद्ध वस्तु को बचाने के लिए समाधान हैSharedPreferences
और फिर इसे SharedPreferences से पढ़ें।
चूँकि API केवल साझाकरणों को साझा करने और साझा करने के लिए / SharedPreferences / API 11 (इसके सरल के बाद) का समर्थन करता है, इसलिए हमें ArrayList ऑब्जेक्ट को क्रमबद्ध और डी-सीरियल करना होगा जिसमें स्ट्रिंग में कार्यों की सूची है।
addTask()
TaskManagerApplication वर्ग की विधि में, हमें साझा प्राथमिकता का उदाहरण प्राप्त करना होगा और फिर putString()
विधि का उपयोग करके क्रमबद्ध ArrayList को संग्रहीत करना होगा :
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();
}
इसी प्रकार हमें कार्यों की सूची को onCreate()
विधि में वरीयता से प्राप्त करना है:
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 प्रोजेक्ट ObjectSerializer.java से क्लास ले सकते हैं