GROUP BY con CursorLoader
¿Cómo puedo definir una consulta GROUP BY
para mi CursorLoader?
Los dos constructores de un CursorLoader
que veo toman un solo Context
o un Context
, Uri
, projection
, selection
, selectionArgs
y sortOrder
.
- Android CursorLoader vs AsyncQueryHandler?
- Cursorloader no se actualiza cuando los datos subyacentes cambian
- Cuál es mejor: Loader o Fragmentos sin cabeza
- MediaStore.Images.Thumbnails.getThumbnail devuelve una miniatura incorrecta en lugar de NULL
- Deslizar para eliminar un cardview hace parpadear durante un breve segundo antes de animar
Pero ningún groupBy
.
(Estoy usando el paquete de soporte para un dispositivo Android 2.3)
- cursor loader no se actualiza en mi pestaña de desplazamiento hasta que reinicie la aplicación
- CursorLoader, obtiene URI para la base de datos local
- NullPointerException en onLoaderFinished usando SimpleCursorAdapter
- Consultar canciones de un álbum con CursorLoader
- ViewPager PagerAdapter con cursor - CursorLoader.onLoadFinished no se llama con una consulta diferente
- ¿Cómo leer un DB de SQLite en android con un cursorloader?
- Android 3.0 - ¿Cuáles son las ventajas de usar instancias de LoaderManager exactamente?
- Android CursorLoader no responde a las notificaciones de ContentProvider
Realmente no…
Puede definir un URI específico para su cláusula GROUP BY específica.
Por ejemplo, si tiene una tabla mPersonTable, posiblemente agrupada por sexo, puede definir los siguientes URI:
PERSON PERSON/# PERSON/GENDER
Al consultar, cambie entre sus consultas para que pueda agregar su grupo por parámetro:
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { String groupBy = null; switch (mUriMatcher.match(uri)) { case PERSON_ID: ... break; case PERSON_GENDER: groupBy = GENDER_COLUMN; case PERSON: SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); builder.setTables(mPersonTable); builder.setProjectionMap(mProjectionMap); return builder.query(db, projection, selection, selectionArgs, groupBy, having, sortOrder, limit); default: break; } }
De hecho, puedes pasar cualquier tipo de parámetros a tu consulta
Obs .: Utilice un UriMatcher para que coincida con el uri con la implementación de la consulta.
Usted puede agregar el grupo por con el parámetro de la selección
new CursorLoader(context,URI, projection, selection+") GROUP BY (coloum_name", null,null);
Aparentemente (y esto es un poco vergonzoso) la primera línea de la documentación indica claramente que el CursorLoader
consulta el ContentResolver
para recuperar el Cursor
. Mientras que el ContentResolver
no expone ningún medio a GROUP BY
hay, por lo tanto, ninguna forma de CursorLoader
podría exponer dicha funcionalidad tampoco.
Así que la respuesta aparente a mi propia pregunta es: ¡ No puedes!
- ¿Qué versión de Eclipse uso para Android?
- Compartir en facebook, twitter a través de share android objetivo