bir api kullanıyorsanız/getStringSet(), o zaman bu bir olası çözüm kullanımı koymak olduğunu cant, ama bu çok pahalı ve daha büyük depolamak istiyorsanız değildir esnek olduğu (seviyeye 8 gibi) listeleri. Preformans önemli ise, basit bir dizi benzeri bir yapı için veri yapısı gibi bir harita yaratmayı kastediyorum.
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;
}
Ve aslında kullanmak için:
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();
}
geri almak için:
kaydetmek için
List<String> animals = new ArrayList<String>();
animals.add("cat");
animals.add("bear");
animals.add("dog");
writeList(someContext, animals, "animal");
Ve geri almak için:
List<String> animals = readList (someContext, "animal");
SharedPreferences'ı kullanmak için sınırlı değilseniz, SQLiteDatabase'u kullanmayı düşünün! Eğer virgül içermeyen ArrayList
içinde String
s garanti ederseniz, sadece
List<String> list = new ArrayList<String>();
...
editor.putString(PREF_KEY_STRINGS, TextUtils.join(",", list));
kullanabilir ve Sen anısına ile sınırlıdır
String serialized = prefs.getString(PREF_KEY_STRINGS, null);
List<String> list = Arrays.asList(TextUtils.split(serialized, ","));
listesine okumak için
Kullandığım şey budur, diğer cevapların da işe yarayacağına eminim. – Peter
İyi, sizin durumunuzda paydaşlarla karmaşık şeyler yapmak yerine daha kolay olurdu. İyi şanslar! – Ali
Bu işe yarayacak olsa da, paylaşılan tercih uygulama kaldırılıncaya kadar kalıcı bir özellik taşıyor, ancak diğer yandan SD kart depolama alanını kullanıyorsak, dosyaları açıkça silmemiz gerekecek. –