異なるインスタンスが最終的に最新の位置を指すようcursor
になるため、各行に参照が渡される理由を説明できますか。渡されたメソッドが、このオブジェクトが渡される瞬間に実際に指している場所であるとmDBHelper.updateFavorites()
予想しているためですが、そうではありません。どうもありがとうございました。cursor
onClick()
Cursor c
@Override
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
View row;
final Cursor cursor = c; // This is different for each row in list view
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); // Here I'm expecting to have the cursor pointing exactly where Cursor c (which is passed to newView() method) is pointing right now.
} else {
mDbHelper.updateFavorite(cursor, 0); // The same here
}
}
});
ViewHolder holder = new ViewHolder(row);
row.setTag(holder);
return (row);
}