Вы можете отслеживать нажатия на элементы в активности Android, используя паттерн прокси или обертку вокруг ваших слушателей нажатий. Вы можете создать класс-обертку, который будет выполнять нужные вам проверки, прежде чем передавать событие дальше к основному обработчику `onClickListener`.
Вот пример того, как это можно реализовать:
1. Создайте интерфейс `OnClickListenerWithCheck`, который будет включать метод для проверки.
```java
public interface OnClickListenerWithCheck {
void onClick(View v);
boolean canProceed(View v);
}
```
2. Создайте класс-обертку, который реализует этот интерфейс, и в котором будет производиться проверка.
```java
public class ClickListenerWrapper implements View.OnClickListener {
private final OnClickListenerWithCheck listener;
public ClickListenerWrapper(OnClickListenerWithCheck listener) {
this.listener = listener;
}
@Override
public void onClick(View v) {
if (listener.canProceed(v)) {
listener.onClick(v);
}
}
}
```
3. В вашем фрагменте или активности создавайте обработчики, которые будут использовать `ClickListenerWrapper`.
```java
button.setOnClickListener(new ClickListenerWrapper(new OnClickListenerWithCheck() {
@Override
public void onClick(View v) {
// Сюда поместите код, который будет выполняться после успешной проверки.
}
@Override
public boolean canProceed(View v) {
// Сюда поместите вашу логику проверки.
return true; // Вернуть true, если вы хотите продолжить, иначе false.
}
}));
```
Этот подход позволяет вам избежать хранения списка всех представлений. Каждую кнопку вы просто оборачиваете в `ClickListenerWrapper`, обеспечивая при этом выполнение необходимых проверок перед основной логикой обработки нажатий. Вы можете легко добавить дополнительные проверки для разных кнопок, просто изменяя логику в методе `canProceed`.
Таким образом, создавая `OnClickListenerWithCheck` для каждой кнопки, вы обеспечите структуру, которая организует код и разделяет логику проверки и действия по клику.