Si, puoi.
Nell'adattatore Aggiungi un nuovo campo:
private Context mContext;
Nel costruttore dell'adattatore aggiungere il codice seguente:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
Nel getView (...) di 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();
}
}
});
sostituisci con i tuoi nomi di classe in cui vedi il tuo codice, la tua attività ecc.
Se è necessario utilizzare lo stesso adattatore per più di un'attività, allora:
Crea un'interfaccia
public interface IMethodCaller {
void yourDesiredMethod();
}
Implementa questa interfaccia nelle attività necessarie per avere questa funzionalità di chiamata del metodo.
Quindi in Adapter getView (), chiama come:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
Hai fatto. Se è necessario utilizzare questo adattatore per attività che non richiedono questo meccanismo di chiamata, il codice non verrà eseguito (se il controllo non riesce).