10

GROUP BYCursorLoader のクエリを定義するにはどうすればよいですか?

a の 2 つのコンストラクターは、 1 つまたは , , ,のいずれかをCursorLoader取ります。ContextContextUriprojectionselectionselectionArgssortOrder

しかし、いいえgroupBy

(Android 2.3 デバイスのサポート パッケージを使用しています)

4

3 に答える 3

25

あまり...

特定のGROUPBY句に特定の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をクエリの実装と一致させます。

于 2012-07-11T04:23:44.620 に答える
4

どうやら (これは少し恥ずかしいことですが)、ドキュメントの最初の行には、が をCursorLoader照会してContentResolverを取得することが明確に記載されていますCursor。は手段を公開してContentResolverいませんGROUP BYが、そのCursorLoaderような機能を公開することはできません。

したがって、私自身の質問に対する明白な答えは次のとおりです。

于 2012-06-09T05:40:57.040 に答える