Как конвертировать ObservableList в Var, используя ReactFX?

Я хочу, чтобы Var (двунаправленно) был привязан к ObservableList к Var, как мне этого добиться? Код демонстрирует идею.

LiveList<String> list = new LiveArrayList<>();
list.addListener((ListChangeListener<? super String>) c ->
     System.out.println("source list changed: " + c.getList()));

// Val<List<String>> listVal = Val.create(() -> list, list);
    Val<List<String>> listVal = list.collapse(Function.identity());
listVal.values().subscribe(v -> System.out.println("listval changed :" + v));

Var<List<String>> listVar = Var.fromVal(listVal, list::setAll);
listVar.values().subscribe(v -> System.out.println("listvar changed :" + v));

list.add("e1");
list.add("e2");
list.add("e3");

Однако это печатает

listval changed :[]
listvar changed :[]
source list changed: [e1]
source list changed: [e1, e2]
source list changed: [e1, e2, e3]

пока я ожидаю

listval changed :[]
listvar changed :[]
source list changed: [e1]
listval changed :[e1]
listvar changed :[e1]
source list changed: [e1, e2]
listval changed :[e1, e2]
listvar changed :[e1, e2]
source list changed: [e1, e2, e3]
listval changed :[e1, e2, e3]
listvar changed :[e1, e2, e3]

Что мне не хватает?

0 ответов

Другие вопросы по тегам