2013-03-22 77 views
1

我有一點問題。就像在代碼中,我試圖創建一個動態MenuItem列表。這是沒有問題的,但我想要選擇/點擊的項目。但我不知道如何正確實施。所有這些都發生在我的視圖中,我想設置值在演示者中繼續。 thx任何幫助。GWT MenuItem-List選定的值

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

如果任何幫助。我從演示者設置列表,並從演示者調用此方法(creatingMenuItemList)。因爲我的東西/思想是正確的概念方法。或者從menuItemChoose獲取值是否正確? – vicR 2013-03-22 12:25:07

回答

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 
    } 
} 
+0

好的是有道理的,但menuItemChoose只是在這個範圍內,所以這是不可能的或?! – vicR 2013-03-22 13:07:30

+0

這是可能的..我試過..我還有一個可能有所幫助的建議,請檢查一下。 – 2013-03-22 13:30:25

2

如果可能的話,你可以做一件事, 我有一個創建運行,所以我有加HashMap和在HashMap中加入names.get(i)和下載鏈接,所以它下載菜單貌似

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); 
} 
+0

+1推薦getUiHandlers():) – 2013-03-22 13:35:17

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 { 
. 
. 
. 
. 

而且實現該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);    

    }