我想观察一个由完全独立的代码修改的ObservableList。我的问题是,我不仅希望在列表更改时(在附加侦听器时,列表可能已经包含元素)调用ListChangeListener,而且还希望将初始状态传递给侦听器。

显然,我可以执行以下操作:

list.addListener(this::listenerMethod);
listenerMethod(fakeChange);


但是使用这种方法,在两个方法调用之间添加的任何项目都将被处理两次,这是不理想的。

当顺序相反时:

listenerMethod(fakeChange);
list.addListener(this::listenerMethod);


第二种方法将完全忽略两个方法调用之间添加的任何元素。

处理这种情况的最佳方法是什么?

最佳答案

似乎您应该关心的是知道第一次调用侦听器以处理任何预调用元素的时间。

在您的情况下,由于可能永远不会调用侦听器,因此您需要更改的是何时以及如何验证列表初始状态。由于更改侦听器是您的实现,因此我会将列表传递给侦听器构造函数,然后处理该点的初始状态。如果侦听器从不被调用,您将被覆盖。

关于java - 赋予ListChangeListener初始状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43380259/

10-10 09:40