繁体   English   中英

上下移动项目

[英]Move items up and down

我想要在按钮单击后上下移动列表上的选定项目,我使用gwt,这就是我之前所做的事情:

  @UiHandler("Up")
    void UpClick(ClickEvent e) {
   ListBox item;
        int i=item.getSelectedIndex();
            if(i>0){
                // add duplicated item in the list
                item.addItem(item.getItemText(i),String.valueOf(i-1));
                // make it the current item
                i=i-2;
                // delete the old occurence of this item
                item.removeItem(i+2);
            }
        }



   @UiHandler("Down")
    void DownClick(ClickEvent e) {
        int i=item.getSelectedIndex();
            if((i!=-1) && (i<item.getItemCount()-1)) {
                item.addItem(item.getItemText(i),String.valueOf(i+1));
                i=i+2;
                item.removeItem(i-2);
            }
        }

在我选择项目并单击“上移”按钮后,我成为以下位置之前而不是向上移动(而不是向上移动(位置随位置变化,其中位置在所选项目之前)的所选项目):

item1
item2
**item3** 
item4

选择item3之后,我希望它将位于item2位置,而item2下降(位置更改)

喜欢:

item1
**item3**
item2
item4

与“向下”按钮相同,所选项目将移至列表的末尾,而不仅仅是随所选项目之后的项目向下移动位置。

有人可以告诉我我在做什么错吗?

您似乎对方法addItem(String, String)感到困惑。

文档中 (重点挖掘):将一个项目添加到列表框中,为该项目指定一个初始值

如您所见,第二个参数指定添加项目的索引。 但是, insertItem(String, int)方法确实指定了索引。 您可能会想使用:

@UiHandler("Up")
void UpClick(ClickEvent e) {
    ListBox item;
    int i=item.getSelectedIndex();
    if(i>0){
        // add duplicated item in the list
        item.insertItem(item.getItemText(i),i-1);

        // delete the old occurence of this item
        item.removeItem(i+1);
    }
}


@UiHandler("Down")
void DownClick(ClickEvent e) {
    int i=item.getSelectedIndex();
    if((i!=-1) && (i<item.getItemCount()-1)) {
        item.insertItem(item.getItemText(i),i+2);

        item.removeItem(i);
    }
}

我还自由地解决了您的索引数学问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM