2012-06-25 12 views
9

Esiste comunque la possibilità di salvare una variabile di elenco nella memoria interna o esterna del telefono di Androids? So di poter salvare i dati primitivi, ma non sono sicuro di questo.Lista di salvataggio Android <String>

Grazie in anticipo.

+0

Quale metodo stai tentando di utilizzare per salvarlo? –

+0

Usa SQLite :) un leggero db – iNan

+2

http://stackoverflow.com/questions/3876680/is-it-possibile-per-aggiungere-un-array-or-object-to-sharedpreferences-on-android –

risposta

19

Sì, esattamente si può salvare solo primitive così si potrebbe qualcosa di simile:

List<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 

StringBuilder csvList = new StringBuilder(); 
for(String s : list){ 
     csvList.append(s); 
     csvList.append(","); 
} 

sharedPreferencesEditor.put("myList", csvList.toString()); 

Quindi per creare la tua list ancora una volta si farebbe:

String csvList = sharedPreferences.getString("myList"); 
String[] items = csvList.split(","); 
List<String list = new ArrayList<String>(); 
for(int i=0; i < items.length; i++){ 
    list.add(items);  
} 

Si potrebbe incapsulare questa "serializzazione" nella vostra la propria classe avvolge una lista per tenerla carina e in ordine. Inoltre, è possibile consultare la conversione di list in JSON.

+2

Assicurarsi che OP presta maggiore attenzione se i suoi elementi di elenco contengono virgole. Preferisco il metodo JSON il migliore. È così facile. – Samuel

+0

Gson è il più semplice: gson.toJson (OBJECT) è sempre quello che faccio. – Codeversed

-1

Se si desidera memorizzare/recuperare/eliminare un valore stringa nel programma, quindi List è migliore di Array. Qui sotto ti mostrerò come usarlo.

// Declaring List Variable 
List<String> Mylist = new ArrayList<String>(); 

// Adding item to List 
Mylist.add(list.size(), "MyStringValue"); //this will add string at the next index 

// Removing element form list 
Mylist.remove(list.size()-1); //this will remove the top most element from List