2017-02-11 4 views
0

に追加するとき、私は私が返されObservableListがあるかどうかを確認私のユニットテストではObservableArrayListJavaが更新されないObservableArrayListたSortedSet

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; 
    } 
} 

にパラメータとして使用されたSortedSetを持っている、との項目が追加されている場合add()メソッドを使用する場合。私はこの試験方法を実行すると

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

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

foto1がObservableListに追加されていないので、assertFalseが失敗したが、私は最初foto1を追加し、ObservableListを得るとき、assertFalseが成功します。

ObservableListの内容は、パラメータとして渡されたコンテナにオブジェクトが追加されたときに更新されると私は想定しています。

ここでは何が起こっているのですか?

+0

observableFotosにリスナーを登録すると、observableFotosに対して何か操作を行うと、リスナーが通知されます。 – Buhb

答えて

0

ドキュメントを読むと、FXCollections.observableArrayListは、具体的には新しいリストを作成していることがわかります。変更がリスナーに表示されるようにするには、この新しいリストを使用して変更を加える必要があります。

関連する問題