カスタム CursorAdapter を使用して設定された ListView があります。BindView 内には、次のコードがあります。
CheckBox mCheckBox = (CheckBox) view.findViewById(R.id.list_done);
mCheckBox.setChecked(isDone);
mCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
AW.getDB().updateTask(c.getInt(c.getColumnIndex(ToDoDBAdapter.KEY_ID)), isChecked);
TD.displayTasks();
}
});
ただし、リスト内のチェックボックスの 1 つが設定されている場合、実行されるコードは、リスト内の最後の項目のカーソル位置に適用されるように見えます。したがって、4つのアイテムのリストで
c.getInt(c.getColumnIndex(ToDoDBAdapter.KEY_ID))
それぞれ 1、2、3、4 を返す必要があり、4 つのボックスのいずれかをチェックすると、値 4 が返されます。
つまり、 onCheckedChangedListener は、リスト内のすべての CheckBox で同じです。