[英]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.