是否可以从ListChangeListener.Change <e>中了解已删除元素的过去索引?

时间:2016-07-05 16:13:02

标签: java javafx observablelist

我正在尝试为ObservaleList编写一个包装器。这需要从基础列表重新发送所有更改事件。不幸的是,我认为没有办法知道Change中已移除元素的索引。只能使用getRemoved()获取已删除元素的列表,并使用getRemovedSize()知道其编号。但没有什么可以传递给ObservaleListBase#nextRemove()

有可能实现吗?

1 个答案:

答案 0 :(得分:1)

您可以使用change.getFrom()获取from索引,使用change.getTo()获取to索引。例如:

ListView<String> listView = new ListView<>();
listView.getItems().addAll("test", "test2", "test3", "test2");

listView.getItems().addListener((ListChangeListener<String>) c -> {
    while(c.next()) {
        System.out.println(String.format("From: %d, To: %d", c.getFrom(), c.getTo()));
    }
});

listView.getItems().removeAll("test2");

输出:

From: 1, To: 1
From: 2, To: 2