Как узнать из ListChangeListener.Change о том, какие элементы были удалены?

ObservableList упорядочена по своей природе, и большинство доступов и отчетов на основе индекса. Но вдруг, сообщая о удалениях, перешли на ценностный подход.

Почему?

У меня есть второй список, содержащий дополнительную информацию для ObservableList, и я хочу, чтобы он синхронизировался с ObservableList. Я могу отслеживать перестановки, обновления и добавления, но не могу отслеживать удаления.

Почему?

Как узнать индексы удаленных элементов из ObservableList? Является ли это возможным?

Документ по JavaFX 8 находится здесь: http://docs.oracle.com/javase/8/javafx/api/javafx/collections/ListChangeListener.Change.html

ОБНОВЛЕНИЕ

Предположим, у меня есть ObservableList, который содержит 5 последовательных одинаковых значений, например, строки "человек", "человек", "человек", "человек", "человек". Сейчас удаляю 3 последних лица. Как я могу узнать, что удалены именно последние 3 человека, если getRemoved() покажет мне только три значения?


person Suzan Cioc    schedule 03.06.2014    source источник


Ответы (1)


Я обнаружил, что при удалении метод getFrom() содержит начальный индекс удаления, а метод getRemovedSize() дает количество удаленных элементов из этого индекса. Этой информации достаточно для изменения синхронизируемого списка.

person Suzan Cioc    schedule 03.06.2014
comment
Что, если вы вызовете метод removeAll(o) для наблюдаемого списка? Ваш подход на основе индексов все еще работает? - person silverbullettt; 25.04.2018