2016-05-09 2 views
0

У меня есть ObservableList<ImageView>, который я хочу обновлять каждый раз, когда приступаю к действию. По умолчанию, я поставил три изображения в списке массива и это, как я удалить последний после некоторого действия:ObservableList не работает, я ожидал

list.remove(list.size()-1; 

После удаления элемента, я называю это метод, который рисует этот список; но когда осталось только одно изображение, оно не исчезает. Я уже пытался вернуть пустой Node, если список пуст, но ничего не изменил. Также выяснилось, что список действительно пуст в отладчике. Любая идея почему?

EDIT:

ObservableList<ImageView> ammoList; 
HBox ammoHBox; 
... 
private HBox addAmmo(){ 
    ammoHBox = new HBox(); 
    if(ammoList.isEmpty()) return hbox; //dont work 
    ammoHBox.getChildren().addAll(naboje); 
    ammoHBox.setSpacing(10); 
    return ammoHBox; 
} 

Это я называю каждый раз, когда ammoList изменилось.

+0

Если вы подтвердили отладчиком, что список действительно пуст, проблема почти наверняка находится в той части, где вы рисуете содержимое списка. Пожалуйста, включите эту часть вместе с любыми другими соответствующими частями вашего кода. – Itai

+0

Что такое 'hbox' (значение, которое вы возвращаете)? Он не определен в фрагменте кода. Вы хотели вернуть 'ammoHBox'? – Itai

+0

Что такое 'naboje' и как используется ваш метод? Кроме того, если вы уже храните 'HBox' в сценарии' HBox' в качестве поля, почему бы вам не изменить существующий, а не воссоздать его? – fabian

ответ

1

Я подозреваю, что list является java.util.List, возможно, тот, который поддерживает ObservableList. В сущности,

ObservableList<ImageView> ammoList = FXCollections.observableList(list); 

В то время как изменения в ammoListбудет сообщается, изменения в list будет не. Убедитесь, что вы изменили ObservableList, используя его метод remove(), который принимает два параметра, а не соответствующий метод List, который занимает один.

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