我正在使用Liststore将数据从DTO对象显示到网格中。 大多数对象属性都是字符串,可以很容易地显示出来。但其中一个参数是一组字符串 总而言之,我的目标如下:
public class MyObject{
private String param1; // "val1"
private String param2; // "val2"
private Set<String> param3; // param3 contains "value3-1", "value3-2" and "value3-3"
...
}
我想在我的网格中为param3中的每个元素显示一行。 这样的事情:
param1 | param2 | param3
val1 | val2 | value3-1
val1 | val2 |值3-2
val1 | val2 | value3-3
您是否知道通过操纵ListStore来实现此目的的简单方法?
谢谢
答案 0 :(得分:1)
ListStore中的每个项目对应于网格中的一行 - 因此,您需要将数据放入网格中。您应该能够轻松地遍历MyObject实例列表并将它们转换为MyObjectRow实例 - 甚至可以包含对“真实”实例的引用。 MyObject实例,便于编辑/更新。
但是,因为它是Set
,所以你要小心 - 套装没有订单!这意味着您可能无法获得value3-1,value3-2 value3-3,但它们可以以任何顺序到达。强烈考虑使用List
代替订单对你很重要。
然后使用List
,MyObjectRow可能如下所示:
public class MyObjectRow {
private MyObject wrapped;
private int index;
//...
public String getParam1() {
return wrapped.getParam1();
}
public String getParam2() {
return wrapped.getParam2();
}
public String getParam3() {
return wrapped.getParam3().get(index);
}
}
然后,对于每个MyObject,创建N MyObjectRow,其中N是param3中的项目数。