newView()
ofがどのように機能するかについて少し混乱していますCursorAdapter
。Cursor c
特にフレームワークによってメソッドに渡されるものに興味があります。4行を含むaListView
で満たされた aがあります。CursorAdapter
デバッギングを行った後、2 つの異なるCursor c
オブジェクトが に渡されていることがわかりnewView()
、この事実に混乱しています。
私は、データベース内のオブジェクトごとにCursor
異なるオブジェクトがメソッドに渡されることを期待していました。したがって、この仮定を念頭に置いて、リストビュー行のチェックボックス要素に onClick リスナーを設定していましたが、これは非常に奇妙に機能します。Cursor
row
@Override
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
View row;
final Cursor cursor = c;
LayoutInflater inflater = ((Activity) ctxt).getLayoutInflater();
row = inflater.inflate(R.layout.row, parent, false);
this.defaultDrawable = (Drawable) row.getBackground();
final CheckBox mStar = (CheckBox) row.findViewById(R.id.star);
mStar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mStar.isChecked()) {
mDbHelper.updateFavorite(cursor, 1);
} else {
mDbHelper.updateFavorite(cursor, 0);
}
}
});
ViewHolder holder = new ViewHolder(row);
row.setTag(holder);
return (row);
}