使用HashMap的Vaadin网格过滤(无类)



我以前根据类(例如,Vaadin网站上大多数示例中所示的人(与Vaadin Grids合作过。然而,对于我的下一个项目,我需要一个基于HashMap(或任何非基于类的变量(的项目。

现在,我有了一个基于HashMap<字符串,字符串>。但是,当我必须添加过滤方法时,我就功亏一篑了。

这是我的完整代码。

public class TestGrid extends Div {
List<String> columns;
public TestGrid() {
Grid<HashMap<String, String>> grid = new Grid<>();
columns = new ArrayList<>();
grid.appendHeaderRow();
HeaderRow headerRow = grid.appendHeaderRow();
grid.setItems(getItems());
for (String s : columns) {
TextField textField = new TextField();
grid.addColumn(h -> h.get(s)).setHeader(s);
TextField filter = new TextField();
filter.setSizeFull();
filter.setClearButtonVisible(true);
filter.setValueChangeMode(ValueChangeMode.EAGER);
filter.addValueChangeListener(event -> {
});
headerRow.getCell(grid.getColumns().get(grid.getColumns().size() - 1)).setComponent(filter);
}
add(grid);
}
List<HashMap<String, String>> getItems() {
columns = new ArrayList<>();
columns.add("Row1");
columns.add("Row2");
columns.add("Row3");
columns.add("Row4");
columns.add("Row5");
List<HashMap<String, String>> hashMaps = new ArrayList<>();
while (hashMaps.size() != 10) {
HashMap<String, String> item = new HashMap<>();
for (String s : columns) {
item.put(s, RandomStringUtils.randomAlphanumeric(10));
}
hashMaps.add(item);
}
return hashMaps;
}
}

通常,我会有一个数据提供程序和第二个类(gridfilter(,其中包含setter、getter和filter布尔值。像这样:

if (name != null && name.length() > 0 && !StringUtils
.containsIgnoreCase(String.valueOf(user.getName()),
name)) {
return false;
}

但现在它在HashMap<字符串,字符串>我想知道如何进行。

我希望你能帮助我。

将id设置为筛选字段,然后使用它从映射中检索正确的值?类似于(其中event是筛选器字段中的ValueChangeEvent(

if (filter!= null && filter.length() > 0 && !StringUtils
.containsIgnoreCase(map.get(event.getSource().getId()),
filter)) {
return false;
}

最新更新