Да, ты можешь.
В адаптере добавьте новое поле:
private Context mContext;
В конструктор адаптера добавьте следующий код:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
В getView (...) адаптера:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
замените на свои собственные имена классов, в которых вы видите свой код, свою активность и т. д.
Если вам нужно использовать один и тот же адаптер для нескольких действий, тогда:
Создать интерфейс
public interface IMethodCaller {
void yourDesiredMethod();
}
Реализуйте этот интерфейс в действиях, которые необходимы для использования этой функции вызова метода.
Затем в адаптере getView () вызовите так:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
Вы сделали. Если вам нужно использовать этот адаптер для действий, которые не требуют этого механизма вызова, код не будет выполняться (если проверка не удалась).