如何为ArrayList设置CellValueFactory返回类型

时间:2015-03-04 14:17:50

标签: javafx wrapper treetable

我在此代码中有以下错误:无法推断ReadOnlyListWrapper的类型参数<> 我的返回类型应该如何?我需要为所有列中的每个节点保存arraylist。但我无法归还。

        for (Entry<String, String> ent : dc.getSortedOrgAll().entrySet()) {

        TreeTableColumn<String, ArrayList<String>> col = new TreeTableColumn<>(
                ent.getValue());

        col.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<String, ArrayList<String>>, ObservableValue<ArrayList<String>>>() {
            @Override
            public ObservableValue<ArrayList<String>> call(
                    CellDataFeatures<String, ArrayList<String>> param) {
                TreeMap<String, List<String>> temp = (TreeMap<String, List<String>>) dc
                        .getFuncTypeOrg().clone();
                ArrayList<String> result =  new ArrayList<>();
                for (int i = 0; i < temp.size(); i++) {
                    List<String> list = temp.firstEntry().getValue();
                    String key = temp.firstEntry().getKey();
                    // root.getChildren();

                    if (list.get(1).equals("Papier")) {
                        System.out.println(list.get(1));
                    }
                    if (list.get(1).equals(param.getValue().getValue())
                            && list.get(5).equals(col.getText())) {
                        result.add(list.get(2));
                        if(list.size()==9)
                        result.add(list.get(list.size()-1));
                        else result.add("White");

                    } else {
                        temp.remove(key);
                    //  result = null;
                    }

                }

                return new ReadOnlyListWrapper<>(result);
            }
        });

1 个答案:

答案 0 :(得分:1)

ReadOnlyListWrapper<T>实现了ObservableValue<ObservableList<T>>,这不是您需要的,因为您声明回调返回ObservableValue<ArrayList<T>>T只是String )。

所以我认为你只需要

return new ReadOnlyObjectWrapper<ArrayList<String>>(result);

你可以省略泛型类型:

return new ReadOnlyObjectWrapper<>(result);

只是评论:我认为通过定义一些实际的数据模型类可以让您的生活更轻松,而不是试图强制您的数据进入各种集合实现。