2016-07-05 53 views
1

我想为ObservaleList写封装。这需要重新发送基础列表中的所有更改事件。不幸的是,我看不出任何方式来知道从Change删除元素的索引。只有通过getRemoved()才能得到已删除元素的列表,并通过getRemovedSize()了解它们的编号。但没有什么可以传递给ObservaleListBase#nextRemove()是否有可能知道从ListChangeListener.Change <E>删除元素的过去指数?

是否可以实现?

+0

也许GETFROM /会过? – assylias

+0

“重新发送所有更改”是什么意思?你实现'ObservableList'并使用内部实例吗?你不能给这个列表添加一个监听器,并用'Change'对象本身重新触发这个改变吗? – Itai

+0

另请参见[*如何连接JavaFX中的可观察列表?*](http://stackoverflow.com/q/37524662/230513) – trashgod

回答

1

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

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 
相关问题