如何定义一个GROUP BY
查询我的CursorLoader?
的两个构造用于CursorLoader
我看到采取一个单一的Context
或Context
, Uri
, projection
, selection
, selectionArgs
和sortOrder
。
但是,没有groupBy
。
(我使用的支持包用于Android 2.3的装置)
如何定义一个GROUP BY
查询我的CursorLoader?
的两个构造用于CursorLoader
我看到采取一个单一的Context
或Context
, Uri
, projection
, selection
, selectionArgs
和sortOrder
。
但是,没有groupBy
。
(我使用的支持包用于Android 2.3的装置)
并不是的...
您可以定义一个特定的URI您的具体GROUP BY子句。
例如,如果你有一个表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;
}
}
事实上,你可以通过任何类型的参数来查询
实验值:使用UriMatcher,以配合您的查询实现的URI。
您可以通过选择参数添加组
new CursorLoader(context,URI,
projection,
selection+") GROUP BY (coloum_name",
null,null);
显然,(这是一个有点尴尬)中第一行的文件中明确指出, CursorLoader
查询ContentResolver
检索Cursor
。 虽然ContentResolver
不公开任何手段来GROUP BY
存在,因此,没有办法CursorLoader
既可以揭露这种功能。
因此,明显的答案我自己的问题是: 你不能!