我一直在阅读Large scale application development and MVP,我想知道你们如何在这种实施模式的方式中处理动态添加的组件。
假设您有一个表,每个表行中有三个按钮,并且可以动态添加表行。你们怎么建议将这些绑定到演示者?
新行如果遵循Google的建议结构,将在视图中生成,该视图没有与演示者的直接链接,也无法回调它(因此没有调用bindNewButtons(Button, Button, Button)
- ish类型方法)。
那么,这里有什么好的做法?我在想,因为演示者将处理事件,该事件在视图内部的窗口小部件中添加一个新行(处理为,在视图中触发生成此新行的方法),我可以使用getRowButtons(int index)
方法在视图中,然后使用它来检索组件并在添加它们之后绑定它们。
我确信有更聪明的方法可以做到这一点,所以我在这里寻求一些建议。
答案 0 :(得分:2)
The second article in this series显示确实有一个对演示者的引用的视图。
观点:
private Presenter<T> presenter;
public void setPresenter(Presenter<T> presenter) {
this.presenter = presenter;
}
主持人:
public interface Presenter<T> {
void onAddButtonClicked();
void onDeleteButtonClicked();
void onItemClicked(T clickedItem);
void onItemSelected(T selectedItem);
}
您现在可以在演示者界面中定义一个方法,该方法有一个参数,用于指示单击了哪一行。如果您不想让视图了解演示者界面,您可以随时选择在演示者可以响应的事件总线上触发事件。根据你的问题,第一个选项似乎是一个更合理的答案。