Java Vaadin:CSV到网格

时间:2018-08-31 09:07:29

标签: java vaadin vaadin8

我有一个CSV文件,要在Vaadin的网格中显示。 文件看起来像这样:

CTI.csv

//div[contains(., "The file  abc.txt  is not available.")]

到目前为止,我尝试了while循环和for循环。 for循环如下所示:

Facebook
Twitter
Instagram
Wiki

现在的问题是,它仅显示最后一个条目“ Wiki”。如果我像下面这样对数据进行硬编码,它将起作用:

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);

那我做错了什么?为什么循环不起作用?

2 个答案:

答案 0 :(得分:2)

tools = Arrays.asList(new CTITools(s.next()));行在每次迭代中创建一个新列表。如果要将项目存储在一个列表中,则需要创建一次。然后使用tools.add(new CTITools(s.next()))将项目添加到循环中的同一列表中。

答案 1 :(得分:1)

您在每次迭代时都会创建一个新列表,因此您会丢失以前的内容。

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()));
}