Как перебрать ComboBox в Vaadin? - PullRequest
2 голосов
/ 15 ноября 2011

Я работаю с Ваадином, и у меня есть некоторые проблемы с переборами вариантов в 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, и я не знаю как.Кажется, мне нужно какое-то удостоверение личности, но я не знаю, как это использовать.Я попробовал следующее безуспешно, но оно не работает (и действительно ужасно):

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, и это не очень мне помогает.Буду очень признателен за любую помощь.

1 Ответ

5 голосов
/ 15 ноября 2011

Если вы посмотрите на javadoc для ComboBox , вы увидите, что метод addItem фактически определен для AbstractSelect класса , и он фактически принимает itemId в качестве параметра.(Это, в свою очередь, делегируется контейнеру Select, который в данном случае по умолчанию является IndexedContainer)

Итак, Collection IDs=box.getItemIds(); вернет вам коллекцию MyObject - то есть то, что вы на самом деле ищете.

...