下面是一段简单的 JavaFX 代码来说明我的问题。
List list1 = new ArrayList();
list1.add("foo");
...
someListView = new ListView<>();
ObservableList someObservableList = FXCollections.observableList(list1);
someListView.setItems(someObservableList);
...
someObservableList.add("bar");
如果我理解正确的话,调用该setItems
方法后,不仅列表的内容会显示在ListView
Gui 组件中,而且如果ObservableList
之后添加项目到实例中,ListView
会自动刷新并自动显示新添加的项目,无需调用任何附加add
或refresh
方法。
到目前为止,一切都很好。但是,如果我在原始列表中添加一些内容(即list1
)怎么办。这些更改不会自动传播。这很有意义,但有时很不方便。
当然,在经典的 Java 应用程序中,应用程序的模型不包含ObservableCollection
实例。因此,无论何时向模型添加内容,都必须更新ObservableLists
从原始列表派生的实例。显然这是不可避免的,对吧?
这让我想知道,从现在开始修改模型类中的Collection
类型出现(例如,、、、List
... Collection
)Set
并Iterable
用它们的ObservableCollection
替代品替换它们是一个聪明的主意吗?
直到现在我一直认为这些ObservableCollection
类只应该在应用程序的 Gui 层中使用,但在任何地方都可以使用它们似乎很方便。