Vaadin shuffle ListSelect

时间:2016-05-23 12:14:57

标签: java list vaadin shuffle vaadin7

如何随机播放ListSelect的项目?

所以我有一个ListSelect与项目一起显示,在我点击一个按钮后,我希望这些项目按顺序洗牌。

仅供参考:我使用的是Vaadin 7和Eclipse Mars

编辑:

final VerticalLayout layout = new VerticalLayout();
        final Button button = new Button("Run");

        ListSelect select = new ListSelect();
        select.setRows(1000);
        select.setNullSelectionAllowed(false);
        select.addItems("Item1","Item2","Item3","Item3");

        //Shuffle the list
        button.addClickListener();

        layout.addComponents(button, select);
        layout.setMargin(true);
        layout.setSpacing(true);

        setContent(layout);
    }

1 个答案:

答案 0 :(得分:2)

使用BeanItemContainer课程有利于您:

    protected void init(VaadinRequest request) {
    final HorizontalLayout layout = new HorizontalLayout();
    final Button button = new Button("Run");

    final ListSelect select = new ListSelect();

    select.setNullSelectionAllowed(false);
    final List<ItemBean> list = new LinkedList();
    //Add elements to list
    list.add(new ItemBean("Item1", 1));
    list.add(new ItemBean("Item2", 2));
    list.add(new ItemBean("Item3", 3));
    list.add(new ItemBean("Item4", 4));
    list.add(new ItemBean("Item5", 5));

    final BeanItemContainer<ItemBean> beanBeanItemContainer = new BeanItemContainer<>(ItemBean.class);
    beanBeanItemContainer.addAll(list);

    select.setContainerDataSource(beanBeanItemContainer);


    //Shuffle the list
    button.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent clickEvent) {
            select.removeAllItems();

            Collections.shuffle(list);

            beanBeanItemContainer.addAll(list);


        }
    });

    layout.addComponents(button);
    layout.addComponent(select);
    layout.setMargin(true);
    layout.setSpacing(true);

    setContent(layout);
}

您的bean类可以定义如下:

public class ItemBean implements Serializable  {
    String name;
    int id;

    public ItemBean(String name, int id) {
        this.name = name;
        this.id = id;
    }

    @Override
    public String toString() {
        return this.name;   
    }

}

如果您有任何其他问题,请与我们联系!