SimpleCursorAdapterで表示させているListViewのWidgetにListenerをセットする
- SimpleCursorAdapterを継承したクラスを作成する
- newViewメソッドをオーバーライドする
- 引数のView変数(たぶんリスト行のレイアウトが入ってる)からwidgetを生成する
- widgetにListenerをセットする
public class MyCursorAdapter extends SimpleCursorAdapter { private CheckBox checkBox; public MyCursorAdapter(Context context, int layout, Cursor c, String from, int to) { super(context, layout, c, from, to); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = super.newView(context, cursor, parent); checkBox = (CheckBox) view.findViewById(R.id.list_row_button); checkBox.setOnClickListener(new onCheckBoxClickListener()); return view; } public class onCheckBoxClickListener implements OnClickListener { public void onClick(View v) { Log.e("MyCursorAdapter", String.valueOf(checkBox.isChecked())); } } public class MyViewBinder implements SimpleCursorAdapter.ViewBinder { public boolean setViewValue(View view, Cursor cursor, int columnIndex) { if (columnIndex == cursor.getColumnIndex("check")) { boolean check = (cursor.getInt(columnIndex) == 1); checkBox.setChecked(check); return true; } return false; } } }
ViewBinderには、DBから取得した値を単純にTextViewにそのまま書き込むだけなら不要。
DBから取った値を加工してTextViewにBindしたり、上のコードみたいにCheckBoxなどBindする場合は、このメソッドを実装して、どのcolumnのときにどのViewにBindするかを書く。
あとはListActivityでsetAdapterすればいい。