Я пишу приложение для обмена сообщениями в GWT, и у меня довольно сложная проблема, для которой найти решение. Я работаю с GWT CellList. В моем списке я отображаю все недавние контакты, с которыми пользователь недавно общался. Но допустим, что пользователь пишет сообщение человеку, которого нет в этом списке. Я временно добавляю их в список недавних контактов и обновляю список ячеек, чтобы он показывал ..
Но тогда давайте скажем, что в итоге они не отправляют сообщение. Я должен быть в состоянии обнаружить это и удалить их из списка. Очевидное место для этого - обработчик изменения выбора. Однако на самом деле оказывается, что в обработчике изменения выбора можно изменить список объектов данных, представляющих список ячеек, но когда вы на самом деле помещаете их в список ячеек, я получаю ошибку индексации за границами.
Я подтвердил, что это проблема. В общем, я застрял. Очевидное место, чтобы проверить это, когда вы выбираете другой контакт для просмотра. Затем я могу проверить, были ли отправлены какие-либо сообщения этому другому контакту, и если нет, избавиться от контакта, но мне нужно как-то не делать этого в selectionChangeHandler. У кого-нибудь есть решение / идеи? Я попробовал событие мыши, но это происходит до того, как произойдет событие выбора.
Спасибо за любую помощь заранее: -)
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
ContactDO selectedContact = selectionModel.getSelectedObject();
//Check if we want to remove a contact from the list
if ( we want to remove a contact in the list that is not the currently selected contact. ) {
//remove contact
recentContacts.remove(contactThatisNotSelected);
//Refresh the contact cell list
contactCellList.setVisibleRange(0, recentContacts.size());
contactCellList.setRowCount(recentContacts.size(), true);
contactCellList.setRowData(0, recentContacts);
}
}
});