Можно ли узнать прошлые индексы удаленных элементов из ListChangeListener.Change‹E›?

Я пытаюсь написать оболочку для ObservaleList. . Это требует повторной отправки всех событий изменений из базового списка. К сожалению, я не вижу никакого способа узнать индексы удаленных элементов из Change. Получить список удаленных элементов можно только с помощью getRemoved() и узнать их количество с помощью getRemovedSize(). Но нечего передавать ObservaleListBase#nextRemove()

Возможно ли выполнить?


person Dims    schedule 05.07.2016    source источник
comment
может быть, getFrom/getTo?   -  person assylias    schedule 05.07.2016
comment
Что вы подразумеваете под повторной отправкой всех изменений? Вы реализуете ObservableList и используете внутренний экземпляр? Разве вы не можете добавить прослушиватель в этот список и повторно запустить изменение с самим объектом Change?   -  person Itai    schedule 05.07.2016
comment
См. также Как объединить наблюдаемые списки в JavaFX?   -  person trashgod    schedule 05.07.2016


Ответы (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
person explv    schedule 05.07.2016