如何GROUP BY
为我的 CursorLoader 定义查询?
CursorLoader
我看到的 a 的两个构造函数采用 singleContext
或 a Context
, Uri
, projection
, selection
, selectionArgs
and sortOrder
。
但是没有groupBy
。
(我正在使用 Android 2.3 设备的支持包)
如何GROUP BY
为我的 CursorLoader 定义查询?
CursorLoader
我看到的 a 的两个构造函数采用 singleContext
或 a Context
, Uri
, projection
, selection
, selectionArgs
and sortOrder
。
但是没有groupBy
。
(我正在使用 Android 2.3 设备的支持包)
并不真地...
您可以为特定的 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;
}
}
事实上,您可以将任何类型的参数传递给您的查询
Obs.:使用 UriMatcher 将 uri 与您的查询实现相匹配。
您可以使用选择参数添加 Group by
new CursorLoader(context,URI,
projection,
selection+") GROUP BY (coloum_name",
null,null);
显然(这有点尴尬)文档中的第一行清楚地说明CursorLoader
了ContentResolver
要检索Cursor
. 虽然ContentResolver
没有公开任何方法GROUP BY
,因此也没有办法CursorLoader
公开这样的功能。
所以对我自己的问题的明显答案是:你不能!