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

または、次のように List に追加するメソッドを作成できます。

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

幸せなコーディング、
カラシュ

于 2014-12-03T18:11:59.130 に答える