0
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,但我想先了解如何手动执行此操作。

4

1 回答 1

0

您可以在此示例中为此使用侦听器:

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].

或者您可以创建一个添加到列表的方法,例如:

private void addToList(String s) {
    src.add(s);
    other.add(Integer.valueOf(s));
}

快乐编码,
卡拉施

于 2014-12-03T18:11:59.130 回答