Ich möchte eine ObservableList beobachten, die durch völlig separaten Code geändert wird. Mein Problem ist, dass ich nicht nur möchte, dass mein ListChangeListener aufgerufen wird, wenn sich die Liste ändert (wenn ich meinen Listener anhefte, kann die Liste bereits Elemente enthalten), aber ich möchte auch, dass der Anfangszustand an den Listener übergeben wird. OffensichtlichGive ListChangeListener Anfangszustand
konnte ich folgendes tun:
list.addListener(this::listenerMethod);
listenerMethod(fakeChange);
Aber mit diesem Ansatz jedes Element, das zwischen den beiden Methodenaufrufe hinzugefügt wird, würde zweimal behandelt werden, was nicht ideal ist.
Wenn die Reihenfolge umgekehrt:
listenerMethod(fakeChange);
list.addListener(this::listenerMethod);
Der zweite Ansatz alle Elemente ignorieren würde völlig zwischen den beiden Methodenaufrufe hinzugefügt.
Was wäre der beste Weg, um mit einer solchen Situation umzugehen?
Es scheint, dass, was Sie beachten sollten, zu wissen, wenn Ihr Listener zum ersten Mal aufgerufen wird, um alle Elemente vor der Invokation – efekctive
@efekctive Ok zu verarbeiten, so zunächst ich das war die Lösung. Aber Ihre Lösung funktioniert nur, wenn die Liste irgendwann geändert wird, was nicht garantiert ist. Die Liste könnte für immer in ihrem ursprünglichen Zustand bleiben. –
Wenn es nicht geändert wird, wird der Listener niemals aufgerufen. Ein strittiger Punkt – efekctive