是的你可以。
在适配器中添加一个新字段:
private Context mContext;
在适配器构造函数中添加以下代码:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
在 Adapter 的 getView(...) 中:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
在您看到代码、活动等的地方替换为您自己的类名。
如果您需要将同一适配器用于多个活动,则:
创建接口
public interface IMethodCaller {
void yourDesiredMethod();
}
在您需要具有此方法调用功能的活动中实现此接口。
然后在 Adapter getView() 中,调用如下:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
你完成了。如果您需要将此适配器用于不需要此调用机制的活动,则代码将不会执行(如果检查失败)。