我想观察一个由完全独立的代码修改的ObservableList。我的问题是,我不只是希望在列表更改时调用ListChangeListener(当我附加我的侦听器时,列表可能已经包含元素),但我也希望将初始状态传递给侦听器。
显然我可以做到以下几点:
list.addListener(this::listenerMethod);
listenerMethod(fakeChange);
但是使用这种方法,在两个方法调用之间添加的任何项目都将被处理两次,这是不理想的。
订单撤销时:
listenerMethod(fakeChange);
list.addListener(this::listenerMethod);
第二种方法将完全忽略在两个方法调用之间添加的任何元素。
处理这种情况的最佳方法是什么?
答案 0 :(得分:1)
看来你应该关心的是第一次调用你的监听器来处理任何预调用元素。
在您的情况下,由于可能永远不会调用侦听器,您需要更改的是何时以及如何验证列表初始状态。由于更改侦听器是您的实现,因此我将列表传递给侦听器构造函数并在此时处理初始状态。如果永远不会调用监听器,那么您将受到保护。