0

我知道你可以像这样创建一个列表绑定:

ObservableList list1 = ...;
ObservableList list2 = ...;

Bindings.createContentBinding(list1, list2);

但我想以一种特殊的方式绑定它们。假设我有这些类型:

Object obj = ...;
MyObject myObj = new MyObject(obj);

这些列表:

ObservableList<Object> objList = ...;
ObservableList<MyObject> myObjList = ...;

每次添加一个新对象时objList,我都希望添加myObjList一个new MyObject(obj);

您可以使用 绑定其他属性Bindings.create*Binding(...),但似乎没有列表的等价物。

关于如何克服这个问题的任何想法?

4

1 回答 1

0
objList.addListener(e->{
    if(e.wasAdded)
    {
        if(myObjectList.size>=e.getFrom())
            myObjList.Add(new myObject(objList.get(objList.size-1)));
        else{
             myObjList.Add(e.getFrom(),new myObject(objList.get(e.getFrom()));
     }
    }
    if(e.wasRemoved)
    {
         myObjectList.Remove(e.getFrom());
    }   
    if(e.wasPermutated)
    {
         //handle this as well
    }
});

希望有帮助:)

编辑以获取更改的对象,而不是假设添加了最后一个对象。还删除对象。那里可能有一些不完整的,因为我没有编译和检查它。如果是,请随时编辑它。希望它至少足以对如何实现它有一个大致的了解。

于 2015-07-07T19:08:05.123 回答