Datos SQLite a un RecyclerView

La aplicación tiene datos en una base de datos SQLite. La interfaz de usuario es principalmente un RecyclerView. La pregunta es cuál es la mejor manera de transferir datos de la base de datos a la interfaz de usuario, mientras se mantiene alejado del hilo principal.

Originalmente planeé usar un CursorLoader, ContentProvider y RecyclerView. Pero leer alrededor parece que RecyclerView no tiene compatibilidad inmediata para los datos proporcionados por Cursor. Dang

Eso me deja con algunas otras opciones ...

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

Un cargador personalizado que carga los datos de SQL y los introduce en los objetos del modelo.

Use un cargador de cursor, y cuando regrese, el cursor iterará a través de él para insertar los datos en los objetos del modelo. Sospecho que esto ocurriría en el hilo principal y puede dañar el rendimiento.

Use Otto para enviar un mensaje de solicitud para solicitar datos, y luego devolver una colección de objetos modelo por mensaje de retorno. Puede haber ~ 500 objetos, así que creo que prefiero abusar de Otto haciendo esto.

Si estoy usando una colección de objetos modelo en lugar de un cursor, veo menos beneficios para un ContentProvider, y también pierdo la capacidad de la interfaz de usuario de actualizarse automáticamente en los cambios de datos (lo que puede ser útil).

Ninguna de estas opciones es atractiva, ¿hay una mejor manera? La aplicación está presionada por el tiempo, por lo que sea lo que sea, debe ser bastante rápida de implementar. Desafortunadamente, la interfaz de usuario debe desplazarse horizontalmente y solo se dirige a Lollipop, por lo que RecyclerView parece una mejor apuesta que ListView.

Respuestas a la pregunta(1)

Su respuesta a la pregunta