У меня есть две кнопки «Следующий элемент» и «Предыдущий элемент» и некоторый пользовательский виджет, содержащий CellList. На нажатия кнопок Звоню метод моего виджета, который changeselection в CellList, называя это SelectionModel:GWT - Неожиданное срабатывание CellList's SelectionChangeEvent
selectionModel.setSelected(value, true);
Когда я обновить содержимое CellList, в кнопки работают нормально, но когда я выбираю элемент в списке, нажав на него, это происходит: Например, у меня есть элементы {0, 1, 2, 3, 4, ..} в списке. Я нажимаю на элемент 1, а затем дважды нажимаю кнопку «Следующий элемент». Эти SelectionChangeEvent происходит:
- Изменить выбор из 1 -> 2 (на первом нажатии кнопки)
- 2 -> 3 (на втором прессе)
- 3 -> 1
Но после того, как шаг 2, если я нажимаю «Предыдущий», он правильно возвращается к элементу 1. Таким образом, элемент, который я нажал мышью, не позволяет выделить более 1 шаг вокруг него.
Я понятия не имею, откуда происходит третье событие. Мое единственное догадывание состоит в том, что событие ручного выбора продолжается в ожидании после стрельбы, но я не знаю, как это проверить. Кто-нибудь знает причину этой проблемы?
UPD:
я нашел подтверждение, что выбор, нажав событие продолжает висеть где-то там в EventBus: когда я изменить фильтры поиска я получить доступ SelectionModel таким же образом, как и на нажатия кнопок и выбора набора на первый элемент. Но если бы пользователь нажал на CellList, то произойдет то же самое: во-первых, выбор меняется на 0, второй, он возвращается к ранее выбранному, если новый выбор данных содержит этот элемент.
обн (на вопрос Умит в):
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
разместить код вашего 'ClickCallHandler' для "Следующий элемент" и "предыдущий элемент" –