【问题标题】:Is it possible to know past indices of removed elements from ListChangeListener.Change<E>?是否可以从 ListChangeListener.Change<E> 中知道已删除元素的过去索引?
【发布时间】:2016-07-05 16:13:01
【问题描述】:

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

有可能实现吗?

【问题讨论】:

  • 可能是getFrom/getTo?
  • “重新发送所有更改”是什么意思?您是否实现ObservableList 并使用内部实例?您不能在该列表中添加一个侦听器并使用 Change 对象本身重新触发更改吗?

标签: java javafx observablelist


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2015-04-25
    相关资源
    最近更新 更多