Hola, estoy obteniendo datos para ListView del servidor en línea que se muestra bien si el usuario está en línea.

Pero también quiero mostrar los datos de ListView en modo fuera de línea, lo que significa que tiene que mostrar los datos que se recuperaron cuando el usuario estaba en línea.

Ejemplo: si se recuperaron 10 registros del servidor en línea y se mostraron en ListView cuando el usuario estaba en línea. Ahora, si el usuario se desconecta, ListView debería mostrar esos 10 registros recuperados anteriormente hasta que el usuario se conecte.

El mejor ejemplo es Facebook, también muestra publicaciones en modo fuera de línea.

Gracias de antemano.

-2
Rajappa R 25 ago. 2016 a las 12:51

2 respuestas

La mejor respuesta

Creo que debería consultar estos pasos:

Cuando el usuario llega a esta actividad (que tiene listView)

  1. Obtenga todos los registros de su base de datos y agréguelos a su listView, muestre estos registros locales (que se han cargado cuando el usuario está en línea, o no hay registros para el usuario por primera vez) al usuario.

  2. Cree una AsyncTask para llamar a su API y obtener registros del servidor, y agregar estos registros a su base de datos

  3. ListView reloadData (obtener registros de la base de datos nuevamente), para mostrar los nuevos registros al usuario, en la función AsyncTask onPostExecute

Espero que estos puedan ayudarte,
Atentamente

1
Vaycent 25 ago. 2016 a las 10:08

Mi sugerencia es guardar datos / json en preferencias compartidas y cuando esté en línea obtenga json del servidor y cuando esté desconectado obtenga json de preferencia compartida para que no tenga que cambiar otro código.

if(online)
{
 // call http server and get json string
 // save this json string in shared preference
}
else{
//
// check if shared pre contains data ( not null) and get data from local shared pref
}

// el código adicional es el mismo que en línea

1
Mayank Sharma 25 ago. 2016 a las 10:15