Sí tu puedes.
En el adaptador, agregue un nuevo campo:
private Context mContext;
En el adaptador Constructor agregue el siguiente código:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
En el getView (...) de Adapter:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
reemplace con sus propios nombres de clase donde vea su código, su actividad, etc.
Si necesita usar este mismo adaptador para más de una actividad, entonces:
Crea una interfaz
public interface IMethodCaller {
void yourDesiredMethod();
}
Implemente esta interfaz en las actividades que necesite para tener esta funcionalidad de llamada al método.
Luego, en Adapter getView (), llame como:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
Estás listo. Si necesita usar este adaptador para actividades que no requieren este mecanismo de llamada, el código no se ejecutará (si la verificación falla).