Так, ти можеш.
В адаптер Додати нове поле:
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();
}
Реалізуйте цей інтерфейс у заходах, необхідних для функціонування цього методу виклику.
Потім в Adapter 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();
}
}
});
Ви закінчили. Якщо вам потрібно використовувати цей адаптер для діяльності, яка не вимагає цього механізму виклику, код не виконається (Якщо перевірка не вдається).