GWT单元列表错误:onSelectionChange,索引超出范围
我正在用GWT编写一个消息传递应用程序,有一个相当困难的问题需要找到解决方案。我在和一个GWT手机名单一起工作。在我的手机列表中,我显示了用户最近与之通信的所有联系人。但假设用户正在向不在该列表中的人发送消息。我临时将他们添加到最近的联系人列表中,并更新手机列表,使其显示 但是,让我们说,他们最终没有发送信息。我需要能够检测到这一点,并将其从列表中删除。最明显的地方是在选择更改处理程序中。事实证明,在选择更改处理程序中,if可以修改表示单元格列表的数据对象列表,但当您实际将它们推送到单元格列表时,我会得到一个索引越界错误 我已经证实这就是问题所在。所以基本上我被卡住了。当您选择要查看的其他联系人时,可以明显地检查这一点。然后,我可以检查是否有任何消息发送给另一个联系人,如果没有,则清除该联系人,但我需要在selectionChangeHandler中以某种方式不这样做。有人有什么解决方案/想法吗?我尝试了一个鼠标向上移动事件,但最终在选择事件发生之前发生 感谢您提前提供的帮助:-)GWT单元列表错误:onSelectionChange,索引超出范围,gwt,Gwt,我正在用GWT编写一个消息传递应用程序,有一个相当困难的问题需要找到解决方案。我在和一个GWT手机名单一起工作。在我的手机列表中,我显示了用户最近与之通信的所有联系人。但假设用户正在向不在该列表中的人发送消息。我临时将他们添加到最近的联系人列表中,并更新手机列表,使其显示 但是,让我们说,他们最终没有发送信息。我需要能够检测到这一点,并将其从列表中删除。最明显的地方是在选择更改处理程序中。事实证明,在选择更改处理程序中,if可以修改表示单元格列表的数据对象列表,但当您实际将它们推送到单元格列表时
我实现的解决方案只是使用一个计时器,然后在大约100毫秒后完成工作。我不太喜欢这个解决方案。我仍在寻找另一个。索引何时出现越界?如果它在GWT代码中,听起来像个bug。你查过问题追踪器了吗?没有,但我做了大量的搜索,通常问题追踪器下会出现一些东西,如果有。似乎在选择事件之前,代码正在录制,或者记录列表的大小,并且希望之后的列表是相同的。我的创可贴是用一个定时器完成的,它的逻辑是100Ms。
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);
}
}
});