Вы не можете добавить слушателя к обычному ArrayList
, так как его нельзя наблюдать. Однако пакет FXCollections
предоставляет ObservableArrayList<E>
, который позволяет прослушивать изменения.
Вот демонстрационная программа:
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
public class Main {
public static void main(String[] args) {
ObservableList<String> strings = FXCollections.observableArrayList();
strings.addAll("One", "Two", "Three");
strings.addListener((ListChangeListener<String>) change -> {
while (change.next()) {
if (change.wasAdded()) {
System.out.println(change.getAddedSubList().get(0)
+ " was added to the list!");
} else if (change.wasRemoved()) {
System.out.println(change.getRemoved().get(0)
+ " was removed from the list!");
}
}
});
strings.add("Dogs");
strings.remove("Two");
}
}
В ListChangeListener
есть больше методов, которые вы можете использовать для получения более подробной информации о том, что было изменено. Просто прочитайте об этом!