android - GROUP BY 与 CursorLoader

标签 android android-cursorloader

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

我看到 CursorLoader 的两个构造函数采用单个 ContextContext, Uri, projectionselectionselectionArgssortOrder

但是没有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/

相关文章:

java - 更改按钮单击 ANDROID 上的默认启动器

android - 一个 Activity 或 fragment 必须有一个单独的加载程序来执行每个数据库操作的类型吗?

android - 设置 Spinner 项目的文本字体

android - 如何将 Android 4.0 的切换按钮反向移植到 Honeycomb 及更早版本

java - 自动切换 Activity

android - 如何对 CursorLoader 结果进行排序?

android - 如何使用 robolectric 测试 android CursorLoader

android - 如何从数据库中获取随机字符串?

android - 如何在线程内使用 Cursor 进行查询? (安卓)

android - 自定义 CursorLoader 通知数据变化