0

我有一个实现“IsTreeItem”的对象。对象显示为两级树项。每个树项都带有一个复选框。我需要知道复选框何时更改值 - 所以我正在听 ValueChangedEvents。

第一个问题是使用此类项目构建的树只会触发 SelectionEvents。如果选择正在更改复选框,则 ValueChanged 事件随后会触发 - 因此无法从 Tree 监听“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 回答