2016-05-23 67 views
1

如何混洗ListSelect的項目?Vaadin shuffle ListSelect

所以我有一個ListSelect顯示項目和我點擊一個按鈕後,我希望項目順序洗牌。

FYI:我使用Vaadin 7和Eclipse火星

編輯:

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); 
    } 
+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; 
    } 

} 

如果您有任何其他問題,請讓我知道!