2012-02-25 15 views
0

私はGWTでメッセージングアプリケーションを作成していますが、解決策を見つけるのはかなり難しい問題です。私はGWT CellListを使って作業しています。私のセルリストには、ユーザーが最近連絡を取った最近の連絡先がすべて表示されています。しかし、ユーザーがそのリストに載っていない人にメッセージを書いていると言うことができます。私は一時的にrecentContactsリストにそれらを追加し、それが示すようにCellListを更新します..GWT CellListエラー:onSelectionChange、範囲外のインデックス

しかし、彼らはメッセージを送信しないように終わったとしましょう。私はそれを検出し、リストから削除する必要があります。そのための明白な場所は、選択変更ハンドラです。実際には、セレクション変更ハンドラ内で、セルリストを表すデータオブジェクトのリストを変更できますが、実際にセルリストにプッシュすると、インデックス外のエラーが発生します。

これが問題であることを確認しました。だから基本的に私は立ち往生している。これを確認する明白な場所は、別の連絡先を表示することです。私はメッセージがこの他の連絡先に送信されたかどうかを確認し、そうでなければ連絡先を取り除くことができますが、どうにかして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

インデックスはいつアウトバウンドしますか? GWTコードの中にバグのように思えます。あなたはその問題トラッカーをチェックしましたか? –

+0

いいえ、しかし、私はたくさんの検索をしました。何か問題があれば、通常、問題追跡ツールの下に何かが表示されます。選択イベントの前に、コードが記録している、またはリストのサイズに注意を払っているように見えます。それは、それが後で同じになることを期待しています。私は100ms後にロジックを行うタイマーを使ってそれを修正しました。 – spierce7

答えて

0

:-)事前に任意の助けてくれてありがとう、とは後100msの程度の作業を行います。このソリューションのファンではありません。私はまだ別のものを探しています。

関連する問題