如何处理来自 Presenter 的 Datagrid 列的事件?
Posted
技术标签:
【中文标题】如何处理来自 Presenter 的 Datagrid 列的事件?【英文标题】:How to handle Datagrid column's events from Presenter? 【发布时间】:2014-06-04 05:34:26 【问题描述】:我正在使用GWT MVP,我想处理来自Presenter 的DataGrid 列中的事件。 来自GWT DataGrid ShowCase...
// First name.
Column<ContactInfo, String> firstNameColumn =
new Column<ContactInfo, String>(new EditTextCell())
@Override
public String getValue(ContactInfo object)
return object.getFirstName();
;
firstNameColumn.setSortable(true);
sortHandler.setComparator(firstNameColumn, new Comparator<ContactInfo>()
@Override
public int compare(ContactInfo o1, ContactInfo o2)
return o1.getFirstName().compareTo(o2.getFirstName());
);
dataGrid.addColumn(firstNameColumn, constants.cwDataGridColumnFirstName());
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>()
@Override
public void update(int index, ContactInfo object, String value)
// Here I would like to call RPC methods
);
dataGrid.setColumnWidth(firstNameColumn, 20, Unit.PCT);
上面的例子,这段代码写在View边,它只是一个例子。作为 mvp 模式,我只需要调用 rpc 请求来更新数据库。这不能在View 一侧完成,但我不知道如何从我的演示者那里设置FieldUpdater。请帮助我如何解决?非常感谢。
【问题讨论】:
【参考方案1】:有两种方法可以做到这一点(MVP I 或 MVP II 方式):
MVP 1 风格:
http://www.gwtproject.org/articles/mvp-architecture.html
在您的View
(即setFieldUpdater(FieldUpdater<ContactInfo, String>)
)上创建一个setter
,该FieldUpdater
将其添加到列中。您可以从Presenter
调用(前提是view
是对您的视图的引用)。
演讲者:
view.setFieldUpdater(new FieldUpdater<ContactInfo, String>()
@Override
public void update(int index, ContactInfo object, String value)
// Make the RPC call
);
MVP2 风格:
http://www.gwtproject.org/articles/mvp-architecture-2.html
如果您有来自 View
的引用,请返回您的 Presenter
。然后你可以在你的Presenter
上调用一个函数。
查看:
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>()
@Override
public void update(int index, ContactInfo object, String value)
getPresenter().onUpdate(info,value);
);
【讨论】:
谢谢Ümit,现在我明白了。感谢 mvp-architecture-2 ,我以前只知道 mvp-architecture-1 。现在我可以从演示者添加或控制数据网格的处理程序。感谢您的完美回答。 当然,np,我实际上建议采用 MVP-II 方法,因为它使测试更容易和更清洁。以上是关于如何处理来自 Presenter 的 Datagrid 列的事件?的主要内容,如果未能解决你的问题,请参考以下文章
Android/Parse-如何处理来自 ParseQuery 的多个回调