2015-03-04 5 views
0

У меня есть следующая ошибка в этом коде: Невозможно вывести аргументы типа для ReadOnlyListWrapper <> Как должен выглядеть мой тип возврата? Мне нужно сохранить arraylist для каждого узла во всех столбцах. Но я не могу вернуть его.Как вернуть возвращаемый тип SetCellValueFactory для 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

ReadOnlyListWrapper<T> реализует ObservableValue<ObservableList<T>>, который не то, что вам нужно, как вы объявили о обратного вызова, чтобы вернуть ObservableValue<ArrayList<T>> (T просто String здесь).

Так что я думаю, что вам просто нужно

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

и вы, вероятно, можно опустить универсальный тип:

return new ReadOnlyObjectWrapper<>(result); 

Просто комментарий: Я думаю, что вы могли бы сделать вашу жизнь намного проще, определив некоторые фактические классов моделей данных, вместо того, чтобы пытаться заставить ваши данные внедряться в различные коллекции.