2

我有一个 JavaFx 客户端。我使用具有 ObservableSet 作为字段的 bean 作为模型。我想将这些数据显示到 ListView 中,但我无法将我的字段类型更改为 ObservableList。

我认为我应该编写一种适配器,以使我的 ObservableSet 适应 ObservableList(因为 ListView 需要它)。

使用 ObservableList 的代码是:

listView.setItems(myBean.getMyEntitiesList());

我需要以相同的方式设置项目,因为数据列表来自服务器的延迟,所以我需要在数据到达时更新 UI。

有人能给我一些关于如何实现这种适配器的想法吗?

4

1 回答 1

3

您可以将侦听器添加到集合并在列表更改时更新列表:

ObservableList<T> items = FXCollections.observableArrayList(myBean.getMyEntitiesList());

myBean.getMyEntitiesList().addListener((Change<? extends T> change) -> {
    if (change.wasAdded()) {
        items.add(change.getElementAdded());
    }
    if (change.wasRemoved()) {
        items.remove(change.getElementRemoved());
    }
});

listView.setItems(items);

显然替换T为列表/集合中元素的实际类型。

于 2016-01-21T17:34:18.253 回答