要收聽ObservableList
我使用監聽器下面的代碼:如果使用foreach進行迭代,在哪裏調用next()JavaFX中的更改?
@Override
public void onChanged(ListChangeListener.Change<? extends MyClass> c) {
for(MyClass s : c.getAddedSubList()) {
// process s
}
}
不幸的是,我得到了很多的異常:
java.lang.IllegalStateException: Invalid Change state: next() must be called before inspecting the Change.
我應該我的循環之前調用next()
?但是這與ListChangeListener
javadoc的說法矛盾,說getList()
應該可以在任何時候工作,而getAddedSubList()
只是getList()
表達式的快捷方式。
想知道,如果你的意思的removeAll爲不相交的子改變的例子:SETALL觸發一次更換(如舊/新內容不爲空),或添加/如果任老刪除/新內容爲空。或者我可能會錯過一些東西,並渴望瞭解我忽略的東西:-) – kleopatra 2015-04-06 08:42:46
是的,'removeAll(...)'是一個更好的例子。我在想'FXCollections.observableList(「A」,「B」,「C」)。setAll(「1」,「B」,「2」);'可以傳播多個子變化;它可以,但它不(在當前的實施中)。 – 2015-04-06 12:43:33
ahh謝謝,......查看你的意思:如果新內容在同一位置包含舊元素,則不會觸發? – kleopatra 2015-04-06 14:10:48