我正在GWT中编写一个消息传递应用程序,并且找到一个解决方案有一个相当困难的问题。我正在使用GWT CellList。在我的单元格列表中,我显示了用户最近与之通信的所有近期联系人。但是,假设用户正在向不在该列表上的人写消息。我暂时将它们添加到recentContacts列表中,并更新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);
}
}
});
答案 0 :(得分:0)
我实现的解决方案只是使用Timer,然后在大约100ms之后完成工作。不是这个解决方案的粉丝。我还在寻找另一个。