Se si utilizza un'API (come il livello 8) dove si cant utilizzare put/getStringSet(), allora questa è una possibile soluzione, ma questo è molto costoso e non flessibili se si desidera memorizzare più grande elenchi. Voglio dire, creare una mappa come la struttura dei dati per una semplice struttura a forma di matrice crea un sovraccarico enorme, se la preformance è importante.
per salvarlo:
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();
}
per recuperarlo:
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;
}
e di utilizzare in realtà:
List<String> animals = new ArrayList<String>();
animals.add("cat");
animals.add("bear");
animals.add("dog");
writeList(someContext, animals, "animal");
e di recuperarli:
List<String> animals = readList (someContext, "animal");
Se non si è limitato ad utilizzare SharedPreferences, considerare l'utilizzo di SQLiteDatabase!
fonte
2012-08-27 23:07:32
Grazie questo è ciò che ho finito per usare, sono sicuro che altre risposte avrebbe funzionato troppo – Peter
Buono, sarebbe più facile, invece di rendere le cose complicate con sharedprefereces nel tuo caso. In bocca al lupo! – Ali
Eventhough questo lavoro, la preferenza condivisa ha una proprietà peculiare del persistere fino alla disinstallazione applicazione, ma d'altra parte se stiamo utilizzando scheda di memoria SD, dovremo eliminare in modo esplicito i file. –