ListProperty<T> 与 ObjectProperty<ObservableList<T>>

ListProperty<T> vs. ObjectProperty<ObservableList<T>>

我注意到 ListView 中的 itemsPropertyObjectProperty<ObservableList<T>> 类型,但我本以为 ListProperty<T>.

现在我想知道:我应该什么时候使用 ObjectProperty<ObservableList<T>>,什么时候使用 ListProperty<T>

答案可以在 ObjectProperty 的 JavaFX 文档中找到,特别是这一行:

For specialized implementations for ObservableList, ObservableSet and ObservableMap that also report changes inside the collections, see ListProperty, SetProperty and MapProperty, respectively.

因此,如果 ObservableList 本身发生变化,使用 ObjectProperty<ObservableList<T>> 将报告,但如果 ObservableList 的任何成员发生变化则不会。

因此,为了回答您的问题,当您仅在 ObservableList 已更改(即:添加或删除的项目)时才需要报告时,您可以使用 ObjectProperty<ObservableList<T>>。如果您还需要跟踪对 ObservableList 中的实际项目所做的更改,则应使用 ListProperty<T>