getView() がカスタム ビュー クラスを返す DataAdapter クラスがあります。ビュー自体は、いくつかのコントロールを含む LinearLayout であり、そのうちの 1 つが CheckBox です。また、データベースの ID と DataAdapter のインデックスといういくつかのプロパティもあります。
CheckBox OnCheckedChange イベントが発生したら、DataAdapter でイベントを発生させて、基になるデータを変更する必要があります。インターフェイスを使用して、ビューにカスタム イベントを設定できます。
private OnChangedListener mListener;
public interface OnChangedListener{
public void onChanged();
}
public void setOnChangedListener(OnChangedListener eventListener) {
mListener=eventListener;
}
CheckBox の CheckedChange から呼び出します。
private OnCheckedChangeListener checkChanged = new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
mListener.onChanged();
}
};
しかし、ビューを引数として返す方法を考え出すことはできません。ビューを返すようにインターフェイスを変更すると、次のようになります。
public interface OnChangedListener{
public void onChanged(MyCustomView arg0);
}
OnCheckedChangeListener() 内からビューを返すことができません:
private OnCheckedChangeListener checkChanged = new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
mListener.onChanged(this);
}
};
「MyCustomView.OnChangedListener 型のメソッド onChanged(MyCustomView) は、引数には適用できません (new CompoundButton.OnCheckedChangeListener(){})」
Handler.Post を使用することを考えましたが、Runnable 内にいるため、まだビューを公開できません。
私が見逃している単純なものがあるに違いないと確信しています...