モケラ

Tech Sheets

mokelab

KiiLibを使ってユーザースコープのバケツを検索する

最終更新日:2015-08-29

ユーザースコープのバケツにオブジェクトをいれたので、次はそのバケツ内を検索してみます。

バケツ内の検索はBucketAPIのquery()を使います。

KiiBucket bucket = new AndroidKiiBucket(new AndroidKiiUser("me", null), BUCKET_NAME);
QueryParams params = new QueryParams(KiiClause.equals(Memo.FIELD_DONE, false));
params.sortByDesc("_modified");

mBucketAPI.query(bucket, params, AndroidKiiObjectDTO.getInstance(), new BucketAPI.QueryCallback<AndroidKiiObject>() {
    @Override
    public void onSuccess(QueryResult<AndroidKiiObject> item) {
        // 検索成功時の処理
        // QueryResult型はList<>を継承しています
    }

    @Override
    public void onError(KiiException e) {
        // 検索失敗時の処理
    }
});

順にみていきましょう。

バケツオブジェクトを作る

検索対象となるバケツオブジェクトを作ります。これはオブジェクト作成時と同じですね。

KiiBucket bucket = new AndroidKiiBucket(new AndroidKiiUser("me", null), BUCKET_NAME);

検索条件オブジェクトを作成する

次に、検索条件を格納したQueryParamsオブジェクトを作ります。コンストラクタの引数でどの条件に一致するものだけを取り出すか指定します。ここでは、"done"フィールドがfalseのものだけを取得しています。

QueryParams params = new QueryParams(KiiClause.equals(Memo.FIELD_DONE, false));

QueryParamsオブジェクトには、このほかにもソート順序を指定したりすることができます。更新時刻の降順で結果をソートするには、次のメソッドを呼びます。

params.sortByDesc("_modified");

検索リクエストを投げる

最後に検索リクエストをBucketAPIのquery()で投げます。結果はコールバックのonSuccess()に引数として渡されます。QueryResult型はList<>なので、リストに対する処理がそのまま使えます。

mBucketAPI.query(bucket, params, AndroidKiiObjectDTO.getInstance(), new BucketAPI.QueryCallback<AndroidKiiObject>() {
    @Override
    public void onSuccess(QueryResult<AndroidKiiObject> item) {
        // 検索成功時の処理
        // QueryResult型はList<>を継承しています
    }

    @Override
    public void onError(KiiException e) {
        // 検索失敗時の処理
    }
});

一覧に戻る