我有一个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的内容会更新。
这里发生了什么,我能做些什么才能让它发挥作用?
答案 0 :(得分:0)
如果您阅读文档,您会注意到FXCollections.observableArrayList
明确表示它会创建新列表。如果您希望更改对于侦听器可见,则必须使用此新列表进行更改。