我想在单击按钮后将列表中的所选项目向上或向下移动,我使用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)
的作用感到困惑。
来自documentation (强调我的):将一个项目添加到列表框中,并为该项目指定一个初始值。
如您所见,第二个参数不指定添加项目的索引。但是,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);
}
}
我还冒昧地修正了你的索引数学。
关于java - 上下移动项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25529815/