Jan 28th, 2015

Guardar Arrays o List | Desarrollo Android

Guardar Arrays o List | Desarrollo Android

Para almacenar objetos en Android existen varias opciones:

- Utilizar SharedPreferences (almacén básico clave->valor)
- Crear archivos dentro del sandbox, en las carpetas destinadas a tu aplicación
- Crear archivos en la tarjeta SD, o memoria externa para los que no tienen SD, del dispositivo
- Crear una base de datos SQLite

La forma más sencilla y rápida de guardarlos es en SharedPreferences, pero este sistema solo permite almacenar datos simples: enteros, booleanos, cadenas de texto... Por lo que tendremos que transformar nuestros objetos a cadenas de texto.

Para ello podemos transformarlos en JSON. Es un formato de intercambio de datos muy simple, una alternativa a XML:
http://es.wikipedia.org/wiki/JSON
Nos permitirá transformar objetos a cadenas de texto.

Para poder realizar la conversión necesitamos una librería de terceros. La más fácil de usar es Gson, de Google:
https://code.google.com/p/google-gson/
Podemos descargar el "jar" desde aquí:
http://mvnrepository.com/artifact/com.google.code.gson/gson/2.3
Y guardarlo en la carpeta "libs" de nuestro proyecto.

Para transformar un objeto a JSON es tan sencillo como esto:

// Creamos un objeto Gson
Gson gson = new Gson();

// Convertimos nuestro objeto a JSON
String jsonObject = gson.toJson(myObject);

// Guardamos nuestro JSON en SharedPreferences
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = preferences.edit();
editor.putString("MyObject", jsonObject);
editor.commit();

// Para recuperarlo:
String savedObject = preferences.getString("MyObject");
// Y lo convertimos de JSON (string) a la clase del objeto
CustomObject myObject = gson().fromJson(savedObject, CustomObject.class);

 

Para el caso de listas es muy parecido:

List<CustomObject> objects = new ArrayList<CustomObject>();
objects.add(a);
objects.add(b);
objects.add(c);

Gson gson = new Gson();
String jsonList = gson.toJson(objects);

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = preferences.edit();
editor.putString("MyObjectList", jsonList);
editor.commit();

Para recuperarlo:

// Recuperamos el string guardado
String savedList = preferences.getString("MyObjectList");
// Esta línea sirve para extraer el tipo correspondiente al listado, necesario para que Gson sepa a qué tiene que convertir
Type type = new TypeToken<List<CustomObject>>(){}.getType();
// Convertimos el string en el listado
List<CustomObject> objects = gson.fromJson(savedList, type);


Share Button

Sobre el Autor

vAlmaraz

Soy un desarrollador independiente de Salamanca, España. Aunque me especializo en Android y Desarrollo Web, también hago trabajos sobre Desarrollo Web Móvil, aplicaciones de escritorio y programación de robótica.

Comentarios

Escribe un Comentario