Javafx 通过引用将 List<String> 绑定到 ListView

ayy*_*323 1 java listview javafx reference list

我正在制作一个 Javafx 应用程序,我有一个List<String>不断更新的应用程序,我希望它与屏幕上的 ListView 同步,而无需每次都手动更新。就像通过引用绑定 ListView 一样。这可能吗?如果是的话我该怎么做?谢谢。

Sla*_*law 5

从你的问题和评论中我了解到你正在尝试做类似的事情:

ObservableList<E> list = ...;
ListView<E> view = ...;
view.itemsProperty().bind(list);
Run Code Online (Sandbox Code Playgroud)

这将不起作用,因为bind需要一个接口ObservableValue并且ObservableList不会扩展该接口。不过,您不需要绑定该items属性。ObservableList属性中的任何内容都将通过for 更改(即添加、删除、排列和更新1items )来观察。这意味着你应该做类似的事情:ListView

ObservableList<E> list = ...;
ListView<E> view = ...;
view.setItems(list);
Run Code Online (Sandbox Code Playgroud)

然后对的修改list将反映在ListView.

如果您需要绑定该items属性,那么您的遗嘱ObservableList需要保存在 的实现中ObservableValue<ObservableList<E>>ObservableListValue<E>.

我建议阅读更多有关 JavaFX 基础知识的内容;例如的教程ListView文档


1. 当元素的属性失效时会触发更新更改事件。为了使 anObservableList能够观察其元素的属性,从而能够触发更新事件,必须使用 来创建它FXCollections.observableArrayList(Callback)