Исходя из вашего вопроса и комментариев, я понимаю, вы пытаетесь сделать что-то вроде:
ObservableList<E> list = ...;
ListView<E> view = ...;
view.itemsProperty().bind(list);
Это не будет работать, поскольку bind
ожидает, что ObservableValue
и ObservableList
не расширяют этот интерфейс. Вам не нужно связывать свойство items
. То, что ObservableList
находится в свойстве items
, будет отслеживаться ListView
для изменений (т.е. добавления, удаления, перестановки и обновления 1 ). Это означает, что вы должны делать что-то вроде:
ObservableList<E> list = ...;
ListView<E> view = ...;
view.setItems(list);
И тогда изменения в list
будут отражены в ListView
.
Если вам нужно для привязки свойства items
, тогда ваш ObservableList
необходимо будет удерживать в реализации ObservableValue<ObservableList<E>>
или ObservableListValue<E>
.
Я рекомендую прочитать больше об основах JavaFX; такие как учебник на ListView
или документация .
1. Событие изменения обновления вызывается, когда свойство элемента было признано недействительным. Чтобы ObservableList
наблюдал свойства своих элементов и, таким образом, мог запускать события обновления, он должен быть создан с FXCollections.observableArrayList(Callback)
.