我有一个实现“IsTreeItem”的对象。对象显示为两级树项。每个树项都使用复选框构建。 我需要知道复选框何时更改值 - 所以我正在收听ValueChangedEvents。
第一个问题是使用这些项构建的树只会触发SelectionEvents。如果选择正在更改复选框,则之后会触发ValueChanged事件 - 因此无法从Tree中侦听“IsTreeItem”中的事件。
所以我让我的“IsTreeItem”激活它自己的元素。所以我(字段)注入一个EventBus并使用它来触发事件,如果“ValueChanged”。 问题是我的“IsTreeItem”是从服务器发送的对象(它在共享包中并且可序列化)。该对象在服务器上实例化(EventBus未被离子注入),并且在客户端上调用“asTreeItem”。
有没有办法以某种方式在Method TreeItem asTreeItem()中注入EventBus?或者是否有任何其他方法让一些人知道复选框是否已更改其值。
答案 0 :(得分:2)
GIN可以在已创建的实例上执行成员注入。
您必须在Ginjector
接口中创建一个方法,该方法将此类实例作为参数,返回类型为void
。
请注意,由于在客户端上没有进行反射,因此GIN将仅从用作参数类型(及其超类)的类中注入字段和方法。
@GinModules(MyGinModule.class)
interface MyGinjector extends Ginjector {
…
void injectIsTreeItemMembers(IsTreeItem item);
}