GROUP BY与CursorLoader

dbm*_*dbm 10 android android-cursorloader

如何GROUP BY为CursorLoader 定义查询?

这两个构造一个CursorLoader我看拿一个单一的ContextContext,Uri,projection,selection,selectionArgssortOrder.

但没有groupBy.

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

JPM*_*aes 24

并不是的...

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

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

PERSON
PERSON/#
PERSON/GENDER
Run Code Online (Sandbox Code Playgroud)

查询时,在查询之间切换,以便按参数添加组:

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;
   }
}
Run Code Online (Sandbox Code Playgroud)

实际上,您可以将任何类型的参数传递给查询

Obs.:使用UriMatcher将uri与您的查询实现相匹配.


Gau*_*rav 6

您可以使用选择参数添加分组依据

new CursorLoader(context,URI,
                        projection,
                                selection+") GROUP BY (coloum_name",
                        null,null);
Run Code Online (Sandbox Code Playgroud)

  • 我将此标记为有用,因为它似乎是唯一适用于现有内容提供商的答案(您无法为该组添加uri)但它有点令人恐惧. (3认同)