Oui, vous pouvez.
Dans l'adaptateur Ajouter 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 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();
}
}
});
remplacer par vos propres noms de classe où vous voyez votre code, votre activité, etc.
Si vous devez utiliser ce même adaptateur pour plus d'une activité, alors :
Créer une interface
public interface IMethodCaller {
void yourDesiredMethod();
}
Implémentez cette interface dans les activités pour lesquelles vous avez besoin de cette fonctionnalité d'appel de méthode.
Puis dans l'adaptateur 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).