根据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
我想在我的解释中,你建议的代码会更直观。也许这个想法是,周围的类('Outer')是某种监听器,代码注册/注销监听器以添加和删除项目。不完全确定文档中的意图是什么。 –