why*_*ent 2 java containers combobox vaadin
我正在与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
}
Run Code Online (Sandbox Code Playgroud)
我将它添加到框中,如下所示:
MyObject o1 = new MyObject("o1",23);
MyObject o2 = new MyObject("o2",44);
ComboBox box=new ComboBox();
box.addItem(o1);
box.addItem(o2);
Run Code Online (Sandbox Code Playgroud)
当我想获取所选数据时,这非常有用:
MyObject o3 = (MyObject)box.getValue();
Run Code Online (Sandbox Code Playgroud)
但现在我需要遍历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?
}
Run Code Online (Sandbox Code Playgroud)
我想保持我的对象简单,避免使用bean和复杂的容器.Vaadins的例子主要是针对String的,这对我没有多大帮助.我真的很感激任何帮助.
如果查看ComboBox的javadoc,您会看到addItem方法实际上是在AbstractSelect类上定义的,它实际上将itemId作为参数.(这又被委托给Select的容器,在这个默认情况下是一个IndexedContainer)
因此,Collection IDs=box.getItemIds();
将返回MyObject的集合 - 即你实际上是在追求什么.