2

カスタム 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 で同じです。

4

0 に答える 0