Вы можете использовать обратный вызов.
public interface OnGetView {
void execute(int position);
}
Создайте пользовательский адаптер, расширяющий ArrayAdapter:
public class CustomAdapter extends ArrayAdapter {
private OnGetView callback;
public CustomAdapter(Context context, int resource, List<T> objects, OnGetView callback) {
super(context, resource, objects);
this.callback = callback;
}
@Override
public View getView(..) {
process...
callback.execute(position); // Should use thread here to not block ui thread if your callback is long-running task
}
}
При инициализации адаптера передайте обратный вызов через этот конструктор, и выset.
// In your fragment
OnGetView myCallback = new OnGetView() {
@Override
void execute(int position) {
... your logic
}
};
или
OnGetView myCallback = () -> { your logic};
Затем передайте его своему адаптеру массива:
new CustomArrayAdapter(...., myCallback);