От JavaDoc:ListChangeListener.Change: как правильно обрабатывать обновленные и перестановкой элементы
ObservableList theList = ...;
theList.addListener(new ListChangeListener<Item>() {
public void onChanged(Change<tem> c) {
while (c.next()) {
if (c.wasPermutated()) {
for (int i = c.getFrom(); i < c.getTo(); ++i) {
//permutate
}
} else if (c.wasUpdated()) {
//update item
} else {
for (Item remitem : c.getRemoved()) {
remitem.remove(Outer.this);
}
for (Item additem : c.getAddedSubList()) {
additem.add(Outer.this);
}
}
}
}
});
}
Добавление и удаление элементов прямо вперед, но как насчет //update item
и // permutate
?
Как узнать, какие элементы были перестановлены другими товарами?
Что именно означает обновление? Это просто добавление одного и того же элемента в список снова?
А что
for (Item remitem : c.getRemoved()) {
remitem.remove(Outer.this);
}
or (Item additem : c.getAddedSubList()) {
additem.add(Outer.this);
}
Что Outer.this
значит?
Большое спасибо за объяснения! Еще один вопрос относительно Outer.this. Должен ли код не быть 'Outer.this.remove (remitem)' и 'Outer.this.add (additem)' intead? – kerner1000
Я предполагаю, что в моей интерпретации код, который вы предлагаете, будет более интуитивным.Возможно, идея состоит в том, что окружающий класс («Наружный») является своего рода слушателем, а код регистрирует/отменяет регистрацию слушателя на элементы, которые добавляются и удаляются. Не совсем точно, что было в документации. –