【发布时间】:2013-12-30 21:46:16
【问题描述】:
我有一个 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 中,所以我仍然无法公开视图。
我确定一定有一些简单的东西我错过了......
【问题讨论】:
标签: android view arguments dataadapter custom-event