आप एक API उपयोग कर रहे हैं, जहां आप नहीं कर सकते उपयोग पुट/getStringSet(), तो यह एक संभव समाधान है, लेकिन इस बहुत महंगा और नहीं लचीला अगर आप बड़ा स्टोर करना चाहते है (8 स्तर की तरह) सूचियों। मेरा मतलब है कि एक सरल सरणी जैसी संरचना के लिए डेटास्ट्रक्चर जैसे नक्शा बनाना एक बड़ा ओवरहेड बनाता है, अगर प्रीफॉर्मेंस महत्वपूर्ण है।
यह सहेजने के लिए:
public static void writeList(Context context, List<String> list, String prefix)
{
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
int size = prefs.getInt(prefix+"_size", 0);
// clear the previous data if exists
for(int i=0; i<size; i++)
editor.remove(prefix+"_"+i);
// write the current list
for(int i=0; i<list.size(); i++)
editor.putString(prefix+"_"+i, list.get(i));
editor.putInt(prefix+"_size", list.size());
editor.commit();
}
इसे पुनः प्राप्त करने के लिए:
public static List<String> readList (Context context, String prefix)
{
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
int size = prefs.getInt(prefix+"_size", 0);
List<String> data = new ArrayList<String>(size);
for(int i=0; i<size; i++)
data.add(prefs.getString(prefix+"_"+i, null));
return data;
}
और वास्तव में इसका इस्तेमाल करने की:
List<String> animals = new ArrayList<String>();
animals.add("cat");
animals.add("bear");
animals.add("dog");
writeList(someContext, animals, "animal");
और इसे पुनः प्राप्त करने:
List<String> animals = readList (someContext, "animal");
यदि आप साझा किए गए संदर्भों तक सीमित नहीं हैं, तो SQLiteDatabase का उपयोग करने पर विचार करें!
स्रोत
2012-08-27 23:07:32
धन्यवाद यह है कि मैं इसका उपयोग कर समाप्त हुआ, मुझे यकीन है कि अन्य उत्तर भी काम करेंगे – Peter
अच्छा, आपके मामले में साझा किए गए लोगों के साथ चीजों को जटिल बनाने के बजाय यह आसान होगा। सौभाग्य! – Ali
घटनाक्रम यह काम करेगा, साझा वरीयता में ऐप अनइंस्टॉलेशन तक जारी रखने की एक अनोखी संपत्ति है, लेकिन दूसरी तरफ यदि हम एसडी कार्ड स्टोरेज का उपयोग कर रहे हैं, तो हमें फ़ाइलों को स्पष्ट रूप से हटाना होगा। –