android android-sqlite android-contentprovider android-recyclerview android-cursorloader

android - Datos SQLite a un RecyclerView



android-sqlite android-contentprovider (1)

La aplicación tiene datos en una base de datos SQLite. La interfaz de usuario es principalmente un RecyclerView. La pregunta es cómo transferir mejor los datos de la base de datos a la interfaz de usuario, mientras se mantiene fuera del hilo principal.

Originalmente planeé usar un CursorLoader, ContentProvider y RecyclerView. Pero al leer, parece que RecyclerView no tiene soporte para los datos suministrados por el Cursor. Dang.

Eso me deja con algunas otras opciones ...

  1. AsyncTask para cargar los datos, ponerlos en objetos modelo y pasarlos al Adaptador RecyclerView. Además de ser feo, no es amigable para el cambio de configuración.

  2. Un cargador personalizado que carga los datos de SQL y los empuja hacia objetos modelo.

  3. Use un cargador de Cursor, y cuando vuelva, el Cursor lo repetirá para insertar los datos en los objetos del modelo. Sospecho que esto ocurriría en el hilo principal y podría dañar el rendimiento.

  4. Utilice Otto para enviar un mensaje de solicitud para solicitar datos, y luego devuelva una colección de objetos modelo por mensaje de devolución. Puede haber ~ 500 objetos, así que creo que puedo abusar de Otto haciendo esto.

Si utilizo una colección de objetos modelo en lugar de un Cursor, percibo un beneficio menor para ContentProvider, y también pierdo la capacidad de la IU para actualizar automáticamente los cambios en los datos (lo que puede ser útil).

Ninguna de estas opciones atrae mucho, ¿hay una mejor manera? La aplicación está bajo presión de tiempo, por lo que sea lo que sea necesita ser bastante rápida de implementar. Desafortunadamente, la IU necesita desplazarse horizontalmente y solo apunta a Lollipop, por lo que RecyclerView parece una mejor apuesta que ListView.


use este adaptador simple https://gist.github.com/Shywim/127f207e7248fe48400b , alternativamente puede usar android.support.v17.leanback.widget.ItemBridgeAdapter con android.support.v17.leanback.widget.CursorObjectAdapter, pero por qué hacer propios la vida más difícil?