Sim você pode.
No adaptador, adicione um novo campo:
private Context mContext;
No construtor do adaptador, adicione o seguinte código:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
No getView (...) do adaptador:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
substitua por seus próprios nomes de classe onde você vê seu código, sua atividade etc.
Se você precisar usar este mesmo adaptador para mais de uma atividade:
Crie uma interface
public interface IMethodCaller {
void yourDesiredMethod();
}
Implemente essa interface nas atividades de que você precisa para ter essa funcionalidade de chamada de método.
Então, em Adapter getView (), chame 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();
}
}
});
Você terminou. Se você precisar usar este adaptador para atividades que não requerem este mecanismo de chamada, o código não será executado (se a verificação falhar).