我有点问题。就像在代码中我试图创建一个动态的MenuItem列表。哪个没问题,但我想要选择/点击的项目。但我不确定如何正确实现它。所有这一切都发生在我的视图中,我想将值设置为在Presenter中继续。 thx任何帮助。
chooseProfileMenuBar = new MenuBar(true);
for (int i = 0; i<names().size(); i++) {
final MenuItem menuItemChoose = new MenuItem(names.get(i), new Command(){
@Override
public void execute() {
// TODO set the onClicked value/name at index i
}
});
chooseProfileMenuBar.addItem(menuItemChoose);
}
return chooseProfileMenuBar;
答案 0 :(得分:2)
map.put(names.get(i),"link"),
现在在execute()中,我添加了Window.open(map.get(menuItem.gettext()),"_blank");
我的项目中的另一个菜单是报告菜单,因此从数据库报告列表即将到来
for(final Temp report : listReports){
MenuItem menuItem = new MenuItem(report.getType().toString(), new Command() {
@Override
public void execute() {
getUiHandlers().showReportPanel(report);
}
});
reportMenuBar.addItem(menuItem);
}
答案 1 :(得分:1)
使用UIHandler
概念的好处在视图和演示者之间进行通信。
创建界面:
import com.gwtplatform.mvp.client.UiHandlers;
public interface MyUiHandler extends UiHandlers {
void onMenuSelected(MenuItem menuitem);
}
然后在您的视图中
public class MyMVPView extends ViewWithUiHandlers<MyUiHandler> implements
MyMvPPresenter.MyView {
.
.
.
.
实现与Presenter的uihandler接口
public class MyMvPPresenter
extends
Presenter<MyMVPPresenter.MyView, MyMVPPresenter.MyProxy>
implements MyUiHandler {
//in the same presenter
public interface MyView extends View, HasUiHandlers<UserDashboardUiHandler> {
//
.
.
.
然后您将在演示者中获得覆盖方法,如
@Override
public voidonMenuSelected(MenuItem menuitem) {
//Your implementation here
}
<强>用法强>
@Override
public void execute() {
getUiHandlers().showReportPanel(menuItemChoose );
}
答案 2 :(得分:0)
你是对的vicR,从menuItemChoose获取值是正确的。 你可以这样做
public void execute() {
onclickMenu(menuItemChoose);
}
void onclickMenu(MenuItem menuItemChoose){
if(menuItemChoose.gettext().equals("abc"){
//call handler method that implemented you in presenter
}
}