2011-04-08 16 views
6

Tengo una vista de lista que contiene 100 filas. Esta es la primera vez que carga todos los datos de un servicio web. Quiero guardar en caché esa información para que, si abro esa página, la obtenga de la memoria caché y no del servicio web. ¿Cómo puedo hacer esto?¿Cómo guardar en caché los datos de la vista de lista en android?

+0

use este ejemplo, acabo de trabajarlo.Haga esta pregunta. [http://stackoverflow.com/questions/15154164/in-android-how-to-implement-cache-in-listview][1] [1]: http: // stackoverflow. com/questions/15154164/in-android-how-to-implementation-cache-in-listview – jithu

Respuesta

3

Si los datos son lo suficientemente sencillo, basta guárdelos en una matriz y use algo como ArrayAdapter para vincular los datos a la vista de lista.

Si sus datos son más complejos, entonces una tabla de SQLite es probablemente preferible. En este caso, use algo como SimpleCursorAdapter.

1

guardar los datos en una tabla SQLite y usar eso como caché cheque la próxima vez si existe esa tabla. Si la tabla existe una consulta que en lugar del webz :-)

1

Puede almacenar los datos como un archivo JSON en la aplicación internal storage space. Encuentro que este es un enfoque mucho más sencillo, ya que puedes mapear fácilmente el JSON a clases de modelos usando una biblioteca como Gson. Por lo general, seguiría este enfoque si los datos que tiene no se "actualizan" como lo haría en una base de datos tradicional (aunque todavía puede actualizar sus datos JSON, solo de forma diferente).

+0

Me gustaría saber si el almacenamiento interno no está accesible incluso si el teléfono está rooteado. – ingsaurabh

+0

almacenamiento interno siempre debe estar disponible, a menos que no tenga espacio – binnyb

+0

lo siento, no estoy pidiendo eso, de hecho está escrito que en el almacenamiento interno no son accesibles para otras aplicaciones e incluso para el usuario que deseo saber si esta condición sigue siendo verdadera si el teléfono está rooteado incluso? – ingsaurabh

0

im suponiendo que ya se utiliza el término caché - los datos se acaba cada x minutos/horas

si los datos cambian cada pocos minutos, simplemente guardar la respuesta de su servicio web de alguna variable local (si sólo necesita ser utilizado para una sola actividad listview)

o guardarlo en la variable global (extender la clase de aplicación y exponer una variable pública de aquí)

si sus datos cambia cada pocas horas después una idea mejor es guardarlo en sqlite (si sus datos necesitan consultas/uniones complejas, etc.)

o simplemente guardarlo como un archivo (ya sea en formato XML JSON o) y comprobar si este archivo y de caducidad y si sigue siendo válido simplemente decodificarlo en lugar de llamar al servicio web de nuevo

Cuestiones relacionadas