CursorからAdapterを生成する
■実装
以下のようにすることでListActivityで使うadapterをcursorから直接生成できる。
SQLiteDatabase sdb = getReadableDatabase();
Cursor cursor = sdb.query(
"table",
new String[]{"_id", "name", "address", "created"},
null,
new String[]{},
null,
null,
"created DESC",
null
);
// Cursorを元にしてListActivity用のadapterを生成する
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
mContext,
R.layout.list,
cursor,// datasource
new String[]{"name", "address"},// データベースカラム名...(a)
new int[]{R.id.list_face, R.id.list_tag}// (a)に対応するTextViewのid
);
上述の方法ではSQLiteで取得したデータになんらかの文字列を加えたりすることはできない。
■表示データの加工
以下のようにSimpleCursorAdapterクラスを継承することでデータを加工して表示できる。
static class ArrangeListAdapter extends SimpleCursorAdapter {
public ArrangeListAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
setViewBinder(new ArrangeListViewBinder());
}
static class ArrangeListViewBinder implements SimpleCursorAdapter.ViewBinder {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if (columnIndex == cursor.getColumnIndex("name")) {// nameの時に文字列を付加する
String p = cursor.getString(columnIndex);// viewにはまだattachされていないのでcursorから取得
((TextView) view).setText(p + " さん");
return true;
}
return false;
}
}
}
TrackBack URL :
Comments (0)
コメントはまだありません»
コメントはまだありません。
この投稿へのコメントの RSS フィード。TrackBack URL
コメントする