当我将监听器附加到可观察列表并在该监听器中时,我尝试删除一些元素,在某些情况下它会通过,在某些情况下它会崩溃。
情境: 项目已从列表中删除。它触发了监听器,在那个监听器中我尝试删除另一个项目。
有没有人有类似的问题?您有任何提示,建议或解决方法吗?
我知道你可以同时删除这两个,但问题是在监听器中我需要检测我需要删除的项目,所以我删除了那里。
这是ObservableList中的错误吗?
我希望它始终有效,或者至少总是崩溃。
以下是代码示例:
*ngFor
答案 0 :(得分:3)
ListChangeListener.Change文档声明:
无法在侦听器中修改源列表
您可以使用Platform.runLater调用解决此问题,以安排在将来的某个时间执行其他更改:
list.addListener((ListChangeListener<String>) c -> {
if (list.contains("second")) {
Platform.runLater(() -> list.remove("second"));
}
});
这样做时要小心,不要引起级联无限循环的变化。