У меня есть функция, которая добавляет пользовательских прослушивателей к тому же событию триггера.
Так что одно и то же событие может вызвать несколько слушателей, это работает.
Я хотел бы, чтобы: если у меня было 3 слушателя (например), я мог удалить только одного из них и позволить двум другим работать.
Это моя функция для добавления событий, они находятся в переменной Map<String, CustomListener>
.
void addEventListener(String eventName, EventListener eventListener) {
List<eventListener> eventListenerList = new ArrayList<>();
if (eventListenerMap.containsKey(eventName)) {
eventListenerList = eventListenerMap.get(eventName);
}
Objects.requireNonNull(eventListenerList).add(eventListener);
eventListenerMap.put(eventName, eventListenerList);
}
И это моя функция, чтобы удалить
void removeEventListener(String eventName, EventListener eventListener) {
if (eventListenerMap.containsKey(eventName)) {
List<InsEventListener> eventListenerList = eventListenerMap.get(eventName);
assert eventListenerList != null;
eventListenerList.remove(eventListener);
eventListenerMap.put(eventName, eventListenerList);
}
else {
Log.w("Remove Event Listener:", "Event not found");
}
}
Как вы можете видеть на рисунке ниже, он распознает тот же класс с тем же адресом lamba, но не удаляет.
Obs: все слушатели вызываются в одной и той же функции в одном месте