ContentProviderのqueryを実装する
最終更新日:2015-07-07
データの追加ができるようになったら、次は取得できるようにしましょう。データの取得はContentProviderのquery()が呼ばれます。
ここまでの実装はここにあります。
public class TodoProvider extends ContentProvider {
// 中略
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
switch (sUriMatcher.match(uri)) {
case URITYPE_TODO_LIST:
return queryTodoList(uri, projection, selection, selectionArgs, sortOrder);
}
return null;
}
private Cursor queryTodoList(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
// Uri = content://com.mokelab.todo.provider/users/{userId}/todos
// pathSegments[0] = users
// pathSegments[1] = {userId}
// pathSegments[2] = todos
String userId = uri.getPathSegments().get(1);
Cursor cursor = mTodoDAO.query(userId, projection, selection, selectionArgs, sortOrder);
return cursor;
}
// 以下省略
}
query()もinsert()と同様に、まずUriMatcherで振り分けを行います。振り分け後はDAOオブジェクトのquery()を呼び、実際のデータ取得を行います。DAOオブジェクトのquery()の実装はこの回を見てください。
これで最低限のことはできそうですが、ContentProviderではもう1つ実装すべきことがあります。それは次回紹介します。