首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定不同对象的两个ObservableLists。(没有EasyBind)

绑定不同对象的两个ObservableLists。(没有EasyBind)
EN

Stack Overflow用户
提问于 2014-08-10 02:59:31
回答 1查看 688关注 0票数 0
代码语言:javascript
复制
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,但我想先了解如何手动完成此操作。

EN

回答 1

Stack Overflow用户

发布于 2014-12-04 02:11:59

您可以使用侦听器来执行此操作,如下例所示:

代码语言:javascript
复制
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].

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

代码语言:javascript
复制
private void addToList(String s) {
    src.add(s);
    other.add(Integer.valueOf(s));
}

快乐的编码,

Kalasch

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25221978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档