JavaFx ObservableSet适配器

时间:2016-01-21 17:27:29

标签: java listview javafx observablelist

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

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

使用ObservableList代码是:

listView.setItems(myBean.getMyEntitiesList());

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

有人能够就如何实现这种类型的适配器给我一些想法吗?

1 个答案:

答案 0 :(得分: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替换为列表/集合中实际类型的元素。