GWT CellList错误:onSelectionChange,索引超出范围

时间:2012-02-25 10:40:23

标签: gwt

我正在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);
            }


        }
    });

1 个答案:

答案 0 :(得分:0)

我实现的解决方案只是使用Timer,然后在大约100ms之后完成工作。不是这个解决方案的粉丝。我还在寻找另一个。