带有CursorLoader的GROUP BY

如何为我的CursorLoader定义一个GROUP BY查询?

我看到的CursorLoader的两个构造函数可以使用单个Context或者ContextUriprojectionselectionselectionArgssortOrder

但是没有groupBy

(我正在使用Android 2.3设备的支持包)

Solutions Collecting From Web of "带有CursorLoader的GROUP BY"

不是真的…

您可以为特定的GROUP BY子句定义特定的URI。

例如,如果您有一个表mPersonTable(可能按性别分组),则可以定义以下URI:

 PERSON PERSON/# PERSON/GENDER 

查询时,在查询之间切换,以便您可以通过参数添加组:

 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; } } 

实际上,您可以将任何parameter passing给您的查询

Obs .:使用UriMatcher将uri与查询实现进行匹配。

您可以使用select参数添加分组

 new CursorLoader(context,URI, projection, selection+") GROUP BY (coloum_name", null,null); 

显然(这有点令人尴尬), 文档中的第一行清楚地指出CursorLoader查询ContentResolver来检索Cursor 。 尽pipeContentResolver没有向GROUP BY公开任何方法,因此, CursorLoader也无法公开这样的function。

所以对我自己的问题的明显答案是: 你不能!