需要 Bindings.equals ObservableList

Need to Bindings.equals ObservableList

我是 JavaFX 属性和绑定的新手。所以我想做的是从 Bindings.equals() 得到一个 BooleanBinding 并传递两个 ObservableList。我不确定在这里使用哪种列表,我需要该列表才能使用 ListView。我浏览了 JavaDocs 上的列表属性迷宫,但在这里没有任何帮助。

我需要将两个列表绑定到 BooleanBinding:

BooleanBinding listsEqual = Bindings.equal(list1, list2);

我还需要这两个列表才能在 ListView:

中工作
ListView listView = new ListView();
listView.setItems(list1);

两个不同列表的目的是让一个列表为当前版本,另一个为原始版本,以查看第一个列表是否已更改。这不是很重要,但我知道我需要其中两个。

我的问题是我找不到同时适用于 Bindings.equal()ListView 的列表实现。

使用

ObservableList<?> list1 = ... ;
ObservableList<?> list2 = ... ;

BooleanBinding listsEqual = Bindings.createBooleanBinding(() -> Objects.equals(list1, list2), 
    list1, list2);

例如:

ListView<String> listView = new ListView<>();
ObservableList<String> list = FXCollections.observableArrayList();
BooleanBinding listsEqual = Bindings.createBooleanBinding(() -> 
    Objects.equals(listView.getItems(), list),
    listView.getItems(), list);
listsEqual.addListener((obs, wereEqual, areNowEqual) -> System.out.println("Lists equal? "+areNowEqual));
System.out.println("Adding to Listview: One");
listView.getItems().add("One");
System.out.println("Adding to list: One");
list.add("One");
System.out.println("Adding to Listview: Two");
listView.getItems().add("Two");
System.out.println("Adding to Listview: Three");
listView.getItems().add("Three");
System.out.println("Adding to list: Two");
list.add("Two");
System.out.println("Adding to list: Three");
list.add("Three");