添加到SortedSet时,Java ObservableArrayList未更新

时间:2017-02-11 14:22:59

标签: java observablelist

我有一个SortedSet,用作ObservableArrayList

中的参数
public class MyListImpl
{
    SortedSet<Foto> fotos;
    ObservableList<Foto> observableFotos;

    public VerzamelingLijst() {
        fotos = new TreeSet<>();
        observableFotos = FXCollections.observableArrayList(fotos);
    }

    @Override
    public boolean add(Foto object) {
        try {
            return fotos.add(object);
        } catch (NullPointerException e) {
            return false;
        }
    }

    @Override
    public ObservableList<Foto> getReadOnlyList() {
        return observableFotos;
    }
}

在我的unittest中,我检查是否返回了ObservableList,以及是否在使用add()方法时添加了一个项目。

@Test
public void testGetReadOnlyList() {
    ObservableList<Foto> result = instance.getReadOnlyList();
    assertThat(result, instanceOf(ObservableList.class));

    instance.add(foto1);
    assertFalse(result.isEmpty());
}

当我运行此测试方法时,assertFalse失败,因为foto1未添加到ObservableList,但是当我第一次添加foto1,然后获取ObservableList时,assertFalse成功。

我假设当一个对象被添加到作为参数传入的容器中时,ObservableList的内容会更新。

这里发生了什么,我能做些什么才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

如果您阅读文档,您会注意到FXCollections.observableArrayList明确表示它会创建列表。如果您希望更改对于侦听器可见,则必须使用此新列表进行更改。