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í:
- Aplicación Android phonegap que tiene problemas con SQlite y almacenamiento local en dispositivos Samsung Galaxy
- Cómo utilizar Spatialite con Xamarin en Android
- Cómo formatear la cláusula WHERE y '?' En una consulta SQLite?
- BroadcastReceiver para SMS de varias partes
- Intento de reabrir un objeto sqlitedatabase ya cerrado
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.
- ¿Cuál es el equivalente más cercano a una variable Session / Cookie en Android?
- Usar insertWithOnConflict para actualizar o insertar
- ¿Qué son las aplicaciones com.sec.android.provider. * Exactamente?
- Cómo eliminar la base de datos en la aplicación para Android
- Número máximo de filas en una tabla sqlite?
- Android - SQLite - SELECCIONAR ENTRE Fecha1 Y Fecha2
- IllegalStateException: obtiene la ranura de campo de la fila 0 col -1 falló
- Comportamiento extraño de la consulta SQLite parametrizada
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.
- Cambiar el ancho y la altura de la vista personalizada en Android
- Crear, almacenar e inflar diseño personalizado en tiempo de ejecución