我正在与Vaadin合作,我在使用ComboBox中的选择时遇到了一些麻烦。我的对象看起来像:
class MyObject{
private String text;
private Integer i;
public MyObject(String text,Integer i){
this.text = text;
this.i = i;
}
public String toString(){
return text;
}
//Getters and setters omitted
}
我将它添加到这样的框中:
MyObject o1 = new MyObject("o1",23);
MyObject o2 = new MyObject("o2",44);
ComboBox box=new ComboBox();
box.addItem(o1);
box.addItem(o2);
当我想获取所选数据时,这非常有效:
MyObject o3 = (MyObject)box.getValue();
但现在我需要遍历ComboBox中的选项,我不知道如何。我似乎需要某种ID,但我不知道如何使用它。我尝试了以下但没有成功,但它不起作用(而且真的很难看):
Collection IDs = box.getItemIds();
Iterator it = IDs.iterator();
while(it.hasNext()){
Object id = it.next();
Item item = IDs.getItem(id);
//What to do now?
}
我想保持我的对象简单,避免使用bean和复杂的容器。 Vaadins的例子主要是针对String的,这对我没有多大帮助。我真的很感激任何帮助。
答案 0 :(得分:5)
如果查看 javadoc for ComboBox,您会看到addItem方法实际上是在AbstractSelect class上定义的,它实际上将itemId作为参数。 (这又被委托给Select的容器,在这个默认情况下是一个IndexedContainer)
所以,Collection IDs=box.getItemIds();
将返回MyObject的集合 - 即你实际上是在追求的。