Ява Ваадин: CSV для Grid - PullRequest
       7

Ява Ваадин: CSV для Grid

0 голосов
/ 31 августа 2018

У меня есть файл CSV, который я хочу отобразить в сетке в Vaadin. Файл выглядит так:

CTI.csv

Facebook
Twitter
Instagram
Wiki

Пока что я попробовал это с Loop и a для Loop. Цикл for выглядит следующим образом:

Scanner sc = null;
    try {
        sc = new Scanner(new File("C:/development/code/HelloWorld/src/CTI.csv"));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
List<CTITools> tools = null;
for (Iterator<String> s = sc; s.hasNext(); ) {
    tools = Arrays.asList(new CTITools(s.next()));
}

Grid<CTITools> grid = new Grid<>();
grid.setItems(tools);
grid.addColumn(CTITools::getTool).setCaption("Tool");
layout.addComponents(grid);

setContent(layout);

Проблема теперь в том, что он показывает только последнюю запись "Wiki". Если я жестко закодирую данные следующим образом:

List<CTITools> tools;
tools = Arrays.asList(
            new CTITools("DFC"),
            new CTITools("AgentInfo"),
            new CTITools("Customer"));
            new CTITools("Wiki"));

Grid<CTITools> grid = new Grid<>();
grid.setItems(tools);
grid.addColumn(CTITools::getTool).setCaption("Tool");

Так что я делаю не так? Почему не работает Loop?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Вы создаете новый список на каждой итерации, поэтому вы теряете свой предыдущий контент.

tools = Arrays.asList(new CTITools(s.next()));

Вы должны добавлять предметы только в один tools список

List<CTITools> tools = new ArrayList<>();
for (Iterator<String> s = sc; s.hasNext(); ) {
    tools.add(new CTITools(s.next()));
}
0 голосов
/ 31 августа 2018

Строка tools = Arrays.asList(new CTITools(s.next())); создает новый список на каждой итерации. Если вы хотите, чтобы ваши элементы хранились в одном списке, вам нужно создать его один раз. Затем используйте tools.add(new CTITools(s.next())), чтобы добавить элементы в тот же список в цикле.

...