[英]Binding two ObservableLists of different Objects. (Without EasyBind)
ObservableList<String> src = FXCollections.observableArrayList();
ObservableList<Integer> other = FXCollections.observableArrayList();
//Create binding.
src.addAll("1", "2", "3");
System.out.println(other);//Should print [1, 2, 3].
以上我對我正在嘗試做的事情有一個想法。
在 src 列表中添加和刪除項目時,另一個列表也隨之同步。 src 列表中的每個項目都與另一個列表中的項目等效。 當然,另一個列表包含來自 src 列表的“翻譯”值。
許多人建議使用 EasyBind,但我想先了解如何手動執行此操作。
您可以在此示例中使用偵聽器:
ObservableList<String> src = FXCollections.observableArrayList();
ObservableList<Integer> other = FXCollections.observableArrayList();
// Create binding.
src.addListener(new ListChangeListener<String>() {
@Override
public void onChanged(ListChangeListener.Change<? extends String> change) {
while (change.next()) {
for (String changedString : change.getList()) {
other.add(Integer.valueOf(changedString));
}
}
}
});
src.addAll("1", "2", "3");
System.out.println(other); // Prints out [1, 2, 3].
或者您可以創建一個添加到 List 的方法,例如:
private void addToList(String s) {
src.add(s);
other.add(Integer.valueOf(s));
}
快樂編碼,
卡拉什
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.