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:

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:

  1. haciendo que la List<CustomItem> data Parcelable , y guardarlo en onSaveInstanceState() y restaurar los datos cuando sea necesario
  2. 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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.