根據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')是某種監聽器,代碼註冊/註銷監聽器以添加和刪除項目。不完全確定文檔中的意圖是什麼。 –