Oui, vous pouvez.
Dans l'adaptateur, ajoutez un nouveau champ:
private Context mContext;
Dans le constructeur de l'adaptateur, ajoutez le code suivant:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
Dans le getView (...) de l'adaptateur:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
remplacez par vos propres noms de classe là où vous voyez votre code, votre activité, etc.
Si vous devez utiliser ce même adaptateur pour plusieurs activités, alors:
Créer une interface
public interface IMethodCaller {
void yourDesiredMethod();
}
Implémentez cette interface dans les activités dont vous avez besoin pour avoir cette fonctionnalité d'appel de méthode.
Ensuite, dans Adapter getView (), appelez comme:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
Vous avez terminé. Si vous devez utiliser cet adaptateur pour des activités qui ne nécessitent pas ce mécanisme d'appel, le code ne s'exécutera pas (si la vérification échoue).