我有两个按钮"Next element“和"Previous”,还有一些包含CellList的定制小部件。在单击按钮时,我调用我的小部件的方法,该方法通过调用CellList中的SelectionModel来改变它的选择:
selectionModel.setSelected(value, true);当我刷新CellList的内容时,按钮工作得很好,但是当我单击它在列表中选择元素时,就会发生这种行为:例如,列表上有元素{0,1,2,3,4,.}。我单击元素1,然后按两次"Next element“按钮。这些SelectionChangeEvent发生在:
但是在第2步之后,如果我按下“前一步”,它将正确返回到元素1。因此,我用鼠标单击的元素不会让选择超过1步。
我不知道第三件事是从哪里来的。我唯一的猜测是手动选择事件在触发后会继续挂起,但我不知道如何检查它。有人知道这个问题的原因吗?
upd:
我发现,通过单击事件,选择继续挂在EventBus的某处:当我更改搜索筛选器时,我访问SelectionModel的方式与单击按钮和将选择设置为第一个元素的方式相同。但是,如果用户在发生相同的事情之前单击CellList :第一,选择更改为0,第二,如果新的数据选择包含该元素,则返回到以前选择的数据。
upd (麻省理工学院的问题):
nextButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
/* Omitting checks that there are elements on the list,
some element is selected and isn't last */
T value = dataProvider.getList().get(currentIndex() + 1);
singleSelectionModel.setSelected(value, true);
singleSelectionModel.isSelected(value);
Element rowElement = cellList.getRowElement(index);
rowElement.scrollIntoView();
}
}upd:发现了导致这个问题的原因: http://code.google.com/p/google-web-toolkit/issues/detail?id=6310
发布于 2013-12-23 12:14:24
https://stackoverflow.com/questions/20743094
复制相似问题