我希望在按钮单击后向上或向下移动列表中的所选项目,我使用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);
}
}
选择项目后点击&#34; up&#34;按钮,我成为向下移动的选定项目,而不是向上移动(与所选项目之前的项目的位置一起更改) 之前:
item1
item2
**item3**
item4
选择item3之后我希望它将在item2位置而item2下降(位置变化)
像:
item1
**item3**
item2
item4
&#34; down&#34;按钮是相同的,所选项目将转到列表的末尾,而不只是使用所选项目之后的项目更改位置。
有谁能告诉我这里我做错了什么?
答案 0 :(得分:1)
您似乎对方法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);
}
}
我也冒昧地修改你的索引数学。