JavaFXObservableSet适配器

JavaFXObservableSet适配器,java,listview,javafx,observablelist,Java,Listview,Javafx,Observablelist,我有一个JavaFx客户端。我正在使用一个bean作为模型,它有一个observeSet作为字段。 我想将这些数据显示到ListView中,但我不能将字段的类型更改为ObservableList 我认为我应该编写一种适配器,以便将我的ObservableSet调整为ObservableList(因为ListView需要这样做) 使用ObservableList,代码为: listView.setItems(myBean.getMyEntitiesList()); 我需要以同样的方式设置项目,因

我有一个JavaFx客户端。我正在使用一个bean作为模型,它有一个observeSet作为字段。 我想将这些数据显示到ListView中,但我不能将字段的类型更改为ObservableList

我认为我应该编写一种适配器,以便将我的ObservableSet调整为ObservableList(因为ListView需要这样做)

使用ObservableList,代码为:

listView.setItems(myBean.getMyEntitiesList());
我需要以同样的方式设置项目,因为数据列表从服务器上偷懒,所以我需要在数据到达时更新Ui


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

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

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);
observeListItems=FXCollections.observearraylist(myBean.getMyEntitiesList());

myBean.getMyEntitiesList().addListener((ChangeGood提示,我试过了,但这行代码在java.util.AbstractCollection.addAll(AbstractCollection.java:343)的com.sun.JavaFX.collections.ObservateStraper$1.hasNext(ObservateStraper.java:214)线程“JavaFX应用程序线程”java.lang.NullPointerException中抛出异常在javafx.collections.FXCollections.observatarraylist(FXCollections.java:341)中的javafx.collections.modifiableobservatelistbase.addAll(modifiableobservatelistbase.java:99)您可能知道如何调试空指针异常。显然,任何人都无法从您显示的堆栈跟踪片段中调试它。如果您用a来回答问题,我可以将答案放在上下文中。您是对的@James_D,不幸的是,注释的字符有限,并将其添加到问题中,它看起来不像一个好主意。所以显而易见的解决方案是创建:)。你又对了。我尝试对我的代码进行符号化,并制作一个MCV示例:-)