2012-05-30 11 views
9

me preguntaba si podría ser posible ahorrar en las preferencias compartidas una matriz de cadenas, de manera que, cada vez que se ahorra una determinada cadena, la almacenamos en esa matriz.almacenar una matriz de cadenas en los SharedPreferences

Por ejemplo, tengo una lista de lugares con un determinado ID que desea marcar como favorito. La situación ideal sería, que tiene una disposición y guardar un ID determinado lugar (vamos a llamarlo Ubicación1) en esa matriz, así que la próxima vez que quiera marcar una nueva ubicación como favorito (vamos a llamarlo Location2), puedo recuperar esa matriz (que hasta ahora contiene Location1) y agrega el ID de esta nueva ubicación que quiero agregar (Location2).

Android tiene métodos para almacenar objetos primitivos, pero no para las matrices. ¿Alguna idea para hacer esto, por favor?

+0

Preferencias AFAIK uso compartido para datos primitivos tipo –

+0

http://stackoverflow.com/questions/7873682/is-it-possible-to-stored-classs-static-object-in-shared-preferenc e/7873759 # 7873759 –

Respuesta

1

métodos de escritura para leer y escribir una matriz serializada. Esto no debería ser demasiado difícil. Simplemente aplana la matriz de cadenas en una sola cadena que almacenes en las preferencias. Otra opción sería convertir la matriz en una estructura XML que luego almacenará en las preferencias, pero eso probablemente sea excesivo.

23

Esto es factible: I was just blogging about it:

SALVAR SU MATRIZ

//String array[] 
//SharedPreferences prefs 
Editor edit = prefs.edit(); 
edit.putInt("array_size", array.length); 
for(int i=0;i<array.length; i++) 
    edit.putString("array_" + i, array[i]); 
edit.commit(); 

RECUPERAR SU MATRIZ

int size = prefs.getInt("array_size", 0); 
array = new String[size]; 
for(int i=0; i<size; i++) 
    prefs.getString("array_" + i, null); 

Acabo de escribir eso para que haya errores tipográficos.

+3

Consulte las respuestas de esta publicación. http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences – AndroidLearner

+0

@Sherif elKhatib ¡funciona como un amuleto! muchas gracias – noloman

+0

@noloman su bienvenida comprobar las funciones del blog .. más genérico –

15

Se podría hacer la matriz de una matriz JSON y luego almacenarla como esto:

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0); 
SharedPreferences.Editor editor = settings.edit(); 

JSONArray jArray = new JSONArray(); 
try { 
    jArray.put(id); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

editor.putString("jArray", jArray.toString()); 
editor.commit(); 

entonces se puede obtener la matriz de esta manera:

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0); 
try { 
    JSONArray jArray = new JSONArray(settings.getString("jArray", "")); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

Sólo una solución alternativa que he utilizado en el pasado

Cuestiones relacionadas