Cómo persistir grandes datos RecyclerView en los cambios de orientación?
Estoy haciendo una aplicación con estructura de contenido algo similar a Reddit. En mi MainActivity.java
tengo un RecyclerView que podría tener mucho contenido. El contenido se carga desde la web y no quiero cargarlo de nuevo cada vez que gira la pantalla.
Por lo tanto, tengo una configuración de RecyclerView algo como esto:
- Arrastrar y soltar entre dos RecyclerView
- Detener elementos de moverse cuando se utiliza StaggeredGridLayoutManager
- ¿Cómo ajustar correctamente el valor de elevación a recyclerview?
- Smooth desplazamiento recyclerview android
- No se puede llamar a void android.view.View.setTranslationZ (float) en un objeto null
MainActivity.java
List<CustomItem> data; // Volley and GSON magic to load content from the web into data list GsonRequest gsonRequest = new GsonRequest<CustomResponse>("http://example.json", CustomResponse.class, null, new Response.Listener<CustomResponse>(){ @Override public void onResponse(CustomResponse response) { for(CustomItem item : response.getItems()){ data.add(item); } mAdapter = new CustomAdapter(data); mRecycler.setAdapter(mAdapter); }, new Response.ErrorListener(){ @Override public void onErrorResponse(VolleyError error) { Log.d("E", error.getMessage()); } }); VolleySingleton.getInstance().getRequestQueue().add(gsonRequest);
CustomResponse.class
public class CustomResponse { @SerializedName("items") private List<CustomItem> items; public List<CustomItem> getItems(){ return items; }
CustomItem.java es algo como esto, aunque tengo muchas más variables en él
public class CustomItem { @SerializedName("id") // that awesome GSON magic public long mID; @SerializedName("title"); public String mTitle; @SerializeName("another_item") public AnotherItem mAnotherItem; // A custom object that I need }
Obviamente, los datos se cargan cada vez que cambia la orientación de la pantalla.
Mi pregunta es: ¿Cómo puedo conservar los datos de mi RecyclerView cuando cambia la configuración? ¿Cuál es la mejor manera?
Sólo pienso en dos opciones:
- haciendo que la
List<CustomItem> data
Parcelable , y guardarlo enonSaveInstanceState()
y restaurar los datos cuando sea necesario - Uso de Sqlite para escribir el contenido en una base de datos, y llenar mi RecyclerView desde allí. Quite el contenido de allí cuando no sea necesario.
- RecyclerView se bloquea al desplazarse
- Definición de onclickListener de RecyclerView en una actividad
- CoordinatorLayout con RecyclerView
- No hay buen ejemplo sobre RecyclerView y StaggeredGridLayoutManager en Documentos de Android
- RecyclerView sin barra de desplazamiento cuando se desactiva el desplazamiento excesivo
- RecyclerView eliminar el bug de animación
- Cómo hacer que RecyclerView se desplace sin problemas?
- Recyclerview exterior no recibe eventos de desplazamiento de Recyclerview interno
- Versión de la aplicación AndroidCódigo demasiado grande
- HTTPS no envía algunos encabezados de autenticación con Retrofit