Mantenimiento de un ListView donde cada elemento de lista tiene una relación de uno a muchos

La forma en que mi aplicación está configurada es que tengo un ListView, mantenido por un CursorLoader, de los mensajes realizados por los usuarios. Cada publicación tiene comentarios de usuario que están asociados con él. Cada listitem tiene una vista de texto personalizada en la parte inferior donde se pueden desplazar los comentarios (con un desplazamiento a la derecha oa la izquierda). Dentro de cada una de las vistas de texto personalizadas hay una lista de los comentarios asociados con su publicación en particular. Su tipo de como los comentarios en la aplicación de Google +, excepto los elementos son desplazables. Los comentarios se almacenan en una tabla de base de datos independiente de los mensajes.

El problema que tengo es que cada vez que se llama BindView, estoy consultando la base de datos y recuperando un cursor con los comentarios asociados y añadiéndolo a la lista de texto personalizado. Esto parece realmente ineficaz consultar la tabla de base de datos de comentarios para cada elemento. Así que me pregunto si habría una manera ideal de manejar esto. Mi código parece algo así:

public void bindView(View view, Context context, Cursor cursor) final String rowid = cursor.getString(cursor.getColumnIndexOrThrow(Database.ROWID)); Cursor commentcursor = c.getContentResolver().query(DatabaseProvider.CONTENT_URI_COMMENTTABLE, freeWriteCommentColumns, Database.PARENTPOSTROWID + " =?", new String[]{rowid}, null); commentcursor.moveToFirst(); while (commentcursor.isAfterLast() == false){ //get comment //add to comment text view list } 

He mirado en CursorJoiners pero eso no parece útil. He jugado con JOINS, pero eso hace que el número de filas de manera más grande de lo que debe ser. Actualmente estoy jugando con un titular para el cursor de tabla de comentarios que se crea cuando el adaptador se crea y se establece como una variable global. Esto parece una avenida decente porque no tengo que repetir cada vez. No estoy seguro de cómo manejar esta situación.

Sé que lo intentó pero este es el camino a seguir. Yo tenía casi el mismo problema, incluso uno más grande porque el mío era con JOIN y luego un MergeCursor. Pero vamos a volver a su problema: bindView () se llama en la interfaz de usuario y que está haciendo llamadas de DB en el hilo de interfaz de usuario, esto es una mala práctica y encima de que se ejecuta todo el cursor. Me habría JOIN la consulta para la publicación y concat los comentarios en el nivel SQL de la carga y entonces yo sólo usaría un cursor para los mensajes y comentarios y todo sería mucho mejor.

¿Cómo concat la cadena en el nivel de SQL? Todos los comentarios juntos? Así esto tendré que mirar y editar mi respuesta.

  • Cómo convertir una base de datos MSSQL en una base de datos SQLite para Android
  • Protección de bases de datos SQLite locales (aplicación Android)
  • ¿Cuál es la sintaxis de "no igual" en SQLite?
  • SQLite en el operador en query ()
  • Android SQLiteException: Error al cambiar la configuración regional de db a 'en_US'
  • Utilizar datetime en SQLite para obtener valores este mes y el mes pasado
  • Android greenDAO Almacenamiento Números de punto flotante incorrectos
  • Rendimiento de Android ContentProvider
  • DETALLES DE EXCEPCIÓN: java.lang.IllegalStateException: Proceso 3188 Cuota de cursor excedido 100, lo matará con Rom MIUI
  • Consultando y trabajando con Cursores en SQLite en Android
  • Límites de la base de datos SQLite en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.