0

「IsTreeItem」を実装するオブジェクトがあります。オブジェクトは、2 レベルのツリー アイテムとして表示されます。各ツリー項目は、チェック ボックスで構築されます。チェックボックスの値がいつ変更されるかを知る必要があるため、ValueChangedEvents をリッスンしています。

最初の問題は、そのようなアイテムで構築された Tree が SelectionEvents のみを起動することです。選択がチェック ボックスを変更している場合、後で ValueChanged イベントが発生します。したがって、ツリーから「IsTreeItem」内のイベントをリッスンする方法はありません。

したがって、「IsTreeItem」に独自の要素を起動させます。だから私は(フィールド)EventBusを注入し、それを使用して「ValueChanged」の場合にイベントを発生させました。問題は、私の「IsTreeItem」がサーバーから送信されたオブジェクトであることです(共有パッケージにあり、シリアル化可能です)。オブジェクトはサーバーでインスタンス化され (EventBus はイオン注入されません)、クライアントで「asTreeItem」が呼び出されます。

何らかの方法で TreeItem asTreeItem() メソッドに EventBus を挿入する方法はありますか? または、チェックボックスの値が変更されたかどうかを外部の人に知らせる他の手段はありますか。

4

1 に答える 1

2

GIN は、作成済みのインスタンスに対してメンバー インジェクションを実行できます。

このGinjectorようなインスタンスを引数として受け取り、戻り値の型がvoid.
クライアントではリフレクションが行われないため、GIN は引数の型として使用されるクラス (およびそのスーパークラス) からのみフィールドとメソッドを注入することに注意してください。

@GinModules(MyGinModule.class)
interface MyGinjector extends Ginjector {
    …

    void injectIsTreeItemMembers(IsTreeItem item);
}
于 2012-12-05T14:15:36.317 に答える