GWT单元列表错误:onSelectionChange,索引超出范围

GWT单元列表错误:onSelectionChange,索引超出范围,gwt,Gwt,我正在用GWT编写一个消息传递应用程序,有一个相当困难的问题需要找到解决方案。我在和一个GWT手机名单一起工作。在我的手机列表中,我显示了用户最近与之通信的所有联系人。但假设用户正在向不在该列表中的人发送消息。我临时将他们添加到最近的联系人列表中,并更新手机列表,使其显示 但是,让我们说,他们最终没有发送信息。我需要能够检测到这一点,并将其从列表中删除。最明显的地方是在选择更改处理程序中。事实证明,在选择更改处理程序中,if可以修改表示单元格列表的数据对象列表,但当您实际将它们推送到单元格列表时

我正在用GWT编写一个消息传递应用程序,有一个相当困难的问题需要找到解决方案。我在和一个GWT手机名单一起工作。在我的手机列表中,我显示了用户最近与之通信的所有联系人。但假设用户正在向不在该列表中的人发送消息。我临时将他们添加到最近的联系人列表中,并更新手机列表,使其显示

但是,让我们说,他们最终没有发送信息。我需要能够检测到这一点,并将其从列表中删除。最明显的地方是在选择更改处理程序中。事实证明,在选择更改处理程序中,if可以修改表示单元格列表的数据对象列表,但当您实际将它们推送到单元格列表时,我会得到一个索引越界错误

我已经证实这就是问题所在。所以基本上我被卡住了。当您选择要查看的其他联系人时,可以明显地检查这一点。然后,我可以检查是否有任何消息发送给另一个联系人,如果没有,则清除该联系人,但我需要在selectionChangeHandler中以某种方式不这样做。有人有什么解决方案/想法吗?我尝试了一个鼠标向上移动事件,但最终在选择事件发生之前发生

感谢您提前提供的帮助:-)


我实现的解决方案只是使用一个计时器,然后在大约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);
            }


        }
    });