如何为我的 CursorLoader 定义一个 GROUP BY
查询?
我看到 CursorLoader
的两个构造函数采用单个 Context
或 Context
, Uri
, projection
、selection
、selectionArgs
和 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;
}
}
事实上,您可以将任何类型的参数传递给您的查询
观察:使用 UriMatcher 将 uri 与您的查询实现相匹配。
关于android - GROUP BY 与 CursorLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10580883/