カスタマイズしたCursorAdapterを使用してListViewを表示するアプリケーションがあります。カスタムCursorAdapter.bindView内に、チェックされた値(カーソルの列に基づく)を設定し、clickListenerを設定するCheckBoxオブジェクトがあります。これが私のコードです:
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();
}
});
唯一の問題は、Androidがビューをリサイクルするときに、onCheckedChangeListenerがまだアクティブであるため、setChecked()を呼び出すと、リスナー内のそのコードが実行されることです。含めたコードが実行される直前にonCheckedChangedListenerを無効にする方法を知りたいです。