2012-06-25 19 views
9

¿De todos modos puedo guardar una variable List en la memoria interna o externa del teléfono Androids? Sé que puedo guardar datos primitivos, pero no estoy seguro de este.Android save List <String>

Gracias de antemano.

+0

¿Qué método está tratando de usar para guardarlo? –

+0

Usar SQLite :) un peso ligero db – iNan

+2

http://stackoverflow.com/questions/3876680/is-it-possible-to-add-an-array-or-object-to-sharedpreferences-on-android –

Respuesta

19

primitivas Sí, exactamente sólo se puede ahorrar por lo que podría algo como esto:

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()); 

Luego de crear su list de nuevo lo haría:

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);  
} 

Usted puede encapsular este "serialización" en su propia clase envolviendo una lista para mantenerla ordenada y ordenada. También puede consultar la conversión de su list al JSON.

+2

Asegúrate de que OP presta más atención si los elementos de su lista contienen comas ... Prefiero el método JSON de la mejor manera. Es tan fácil. – Samuel

+0

Gson es el más fácil: gson.toJson (OBJECT) es siempre lo que hago. – Codeversed

-1

Si desea almacenar/recuperar/eliminar algún valor de cadena en su programa, entonces List es mejor que Array. A continuación, le mostraré cómo 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