Más contenido relacionado La actualidad más candente (20) Similar a "あんざいゆき" x "秋葉ちひろ" はカンファレンスアプリをどう作るのか? (20) "あんざいゆき" x "秋葉ちひろ" はカンファレンスアプリをどう作るのか?41. ABC 2014 Spring のデータ
http://www.android-group.jp/conference/
abc2014s/api/
42. ContentProvider設計
• id : integer primary key
• title : text
• abstract : text
• speakers : text(speaker
idを;で結合)
• start_time : long
• end_time : long
カンファレンス
• room_id : integer
• room : text
• category_id : integer
• category : text
• time_frame : integer
44. ContentProvider設計
• id : integer primary key
• group : text
• title : text
• content : text
バザール
• location_area : text
• location_area_id :
integer
• location_number:
• location_number_id :
integer
55. 2.カンファレンス 3.バザールムテーブル
Content Provider で group By を使う
Uri.Builder builder = DataProvider.SESSION_URI.buildUpon();
builder.appendQueryParameter("groupBy",
DataProvider.SessionColumn.COLUMN_CATEGORY_ID);
Uri uri = builder.build();
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
!
String groupBy = uri.getQueryParameter("groupBy");
!
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
...
Cursor c = qb.query(db, projection, selection, selectionArgs,
groupBy, null, orderBy);
57. 2.カンファレンス 3.バザールムテーブル
as を使って _id として取得
String[] projection = {
DataProvider.SessionColumn.COLUMN_CATEGORY_ID + " as " +
DataProvider.SessionColumn._ID,
DataProvider.SessionColumn.COLUMN_CATEGORY};
!
return new CursorLoader(getActivity(), uri, projection, null, null, null);
59. 2.カンファレンス 3.バザールムテーブル
MergeCursor で Cursor を合体
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {
MatrixCursor all = new MatrixCursor(new String[]{
DataProvider.SessionColumn._ID,
DataProvider.SessionColumn.COLUMN_CATEGORY});
!
// CATEGORY_ID は 1 からなので、全トラック用に 0 を使う
all.addRow(new Object[]{0, getString(R.string.all_track)});
mAdapter.swapCursor(new MergeCursor(new Cursor[]{all, c}));
}