2011-11-15 11 views
1

私はVaadinと一緒に作業していますが、ComboBoxの選択肢を繰り返していく上でいくつか問題があります。私が選択したデータを取得したいとき、これは素晴らしい作品VaadinでComboBoxを反復処理する方法は?

MyObject o1 = new MyObject("o1",23); 
MyObject o2 = new MyObject("o2",44); 
ComboBox box=new ComboBox(); 
box.addItem(o1); 
box.addItem(o2); 

:私はこのようなボックスに追加

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 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? 
} 

私は私のオブジェクトをシンプルにし、豆や複雑なコンテナを使用しないようにしたいと思います。 Vaadinsの例は主にStringのためのものであり、それは私をそんなに助けません。私は本当に助けに感謝します。

答えて

4

javadoc for ComboBoxを見ると、実際にはaddItemメソッドがAbstractSelect classに定義されており、実際にはitemIdがパラメータとして使用されていることがわかります。 (デフォルトのケースではIndexedContainerであるSelectのコンテナに委譲されます)

したがって、Collection IDs=box.getItemIds();は、あなたが実際に何をしているか、つまりMyObjectのコレクションを返します。

関連する問題