2017-02-11 14 views
0

У меня есть SortedSet, который используется в качестве параметра в 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; 
    } 
} 

В моем 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

Если вы зарегистрируете прослушиватель на наблюдаемыхFotos, он будет извещен, если вы что-то сделаете для наблюдаемыхFotos. – Buhb

ответ

0

Если вы прочтете документацию, вы заметите, что FXCollections.observableArrayList конкретно говорит, что создает новый список. Если вы хотите, чтобы ваши изменения были видны слушателям, вы должны использовать этот новый список для внесения изменений.

 Смежные вопросы

  • Нет связанных вопросов^_^