我有一个 DataAdapter 类,它的 getView() 返回一个自定义视图类。View 本身是一个包含一些控件的 LinearLayout,其中一个是 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) 不适用于参数(新 CompoundButton.OnCheckedChangeListener(){})”
我考虑过使用 Handler.Post,但是我会在 Runnable 中,所以我仍然无法公开视图。
我敢肯定一定有一些简单的东西我错过了......