SimpleCursorAdapter.ViewBinderを継承したクラスを作り、それをSimpleCursorAdapterを継承したクラスのコンストラクタでsetViewBinder(new MyViewBinder());のように与える。
SimpleCursorAdapter.ViewBinderは
public boolean setViewValue(View view, Cursor cursor, int column_index)
を実装する必要があり、列名COL_KEY_1のところをいじりたい時は、cursor.getColumnIndex(COL_KEY_1) == column_indexが成立した時COL_KEY_1のターン!なので、バインド時にCOL_KEY_1と対応させたviewにキャストしていじってsetText()とかすれば良い。
(サンプルコード)今作り掛けのコードのスレ覧の断片
2chではスレID=立った時間のtime_tなのでDBにはスレIDで保存してるけど、表示は時刻表示したいみたいな話
ListAdapter adapter = new ThreadListCursorAdapter( this, R.layout.threads_list_row, cursor, new String[] { BoardsDbAdapter.KEY_THREAD_NAME, BoardsDbAdapter.KEY_THREAD_ID }, new int[] { R.id.thread_list_name, R.id.thread_list_timestamp } ); setListAdapter(adapter);(中略)static class ThreadListCursorAdapter extends SimpleCursorAdapter { static class ThreadListViewBinder implements SimpleCursorAdapter.ViewBinder { private SimpleDateFormat format; public ThreadListViewBinder() { format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); } @Override public boolean setViewValue(View view, Cursor cursor, int column_index) { int thread_id_index = cursor.getColumnIndex(BoardsDbAdapter.KEY_THREAD_ID); if (column_index == thread_id_index) { int thread_id = cursor.getInt(thread_id_index); Date date = new Date((long) thread_id * 1000);TextView text_view = (TextView) view;
text_view.setText(format.format(date));
return true;
}
return false;
}
}
public ThreadListCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
setViewBinder(new ThreadListViewBinder());
}
}
はじめまして、いつも参考にさせて頂いています。
BoardsDbAdapter はどこで定義しているものでしょうか。
へっ
どこで定義もなにも、単にテーブルのカラム名をstatic final Stringで定義してるだけですよ