Связывание Javafx List <String>с ListView по ссылке - PullRequest
0 голосов
/ 13 сентября 2018

Я делаю приложение Javafx, и у меня есть List<String>, который я постоянно обновляю, и я хочу, чтобы он синхронизировался с ListView, который у меня есть на экране, и мне не нужно каждый раз обновлять его вручную. Как привязка ListView по ссылке. Это возможно? и если да, то как мне это сделать? Благодаря.

1 Ответ

0 голосов
/ 13 сентября 2018

Исходя из вашего вопроса и комментариев, я понимаю, вы пытаетесь сделать что-то вроде:

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).

...