2012-01-06 64 views
0

我正在使用MVP体系结构(或至少近似于一个)并具有呈现器的层次结构,并具有类似的嵌套视图。为了简单起见,我会坚持前两个级别:用杜松子酒将视图注入其他视图

AppPresenter/AppView在顶层。第二级的DocumentListPresenter/DocumentListView和TranslationPresenter/TranslationView。

这两个二级视图作为窗口小部件添加到顶级视图的面板上,但此时这是通过将两个二级演示者插入顶级演示者完成的,然后让顶级演示者通过它们通过setter方法对其视图的看法。

这似乎有点迂回的做事方式。如果没有主持人参与,Gin可以将第二级视图注入顶级视图吗?

+0

另一个想法是在顶级视图的ui.xml中添加第二级视图,但我不确定这样做是否可以完成,同时仍然保持视图与其相关联的演示者之间的适当引用。 – 2012-01-06 00:50:18

回答

0

我设法得到一个小的改动的代码吉斯本工作(覆盖在扩展AbstractPresenterModule我的本地类:

@Override 
protected <D extends Display> void bindDisplay(Class<D> display, Class<? extends D> displayImpl) 
{ 
    bind(display).to(displayImpl).in(Singleton.class); 
} 

我一直在使用绑定主持人作为bindPresenter()方法一个单身人士,并调用bindDisplay()来绑定显示接口到它的实现,但后者不是一个单身绑定,所以我结束了不同的实例(一个链接到主持人,另一个链接到包含显示类)。

重写bindDisplay()方法使显示绑定一个单例en确保注入到另一个显示中的显示实现与演示者绑定的实例相同。