要收听,ObservableList我在侦听器中使用以下代码:
@Override
public void onChanged(ListChangeListener.Change<? extends MyClass> c) {
for(MyClass s : c.getAddedSubList()) {
// process s
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到了很多例外:
java.lang.IllegalStateException: Invalid Change state: next() must be called before inspecting the Change.
Run Code Online (Sandbox Code Playgroud)
我应该next()在循环之前打电话吗?但这与ListChangeListenerjavadoc所说的“getList()应该在任何时候都有效”的说法相矛盾,这getAddedSubList()只是getList()表达的捷径。
对于不能由方法的单个结果集表示的单个事件,可能会触发更改事件ListChangeListener.Change.getXXX()。(例如,setAll(...)在某些情况下,如果您调用observable 列表。)为了说明此类更改,您必须遍历“更改表示”的集合,获取其中每个的信息。正确使用的习语是
@Override
public void onChanged(ListChangeListener.Change<? extends MyClass> c) {
while (c.next()) {
if (c.wasAdded()) {
for(MyClass s : c.getAddedSubList()) {
// process s
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |