2

少し問題があります。コードのように、動的なMenuItemリストを作成しようとしています。これは問題ありませんが、選択/クリックされたアイテムが欲しいです。しかし、それを正しく実装する方法がわかりません。これはすべて私のビューで発生しており、プレゼンターで続行するように値を設定したいと思います。助けのための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;
4

3 に答える 3

2

可能であれば、もう1つできることがあります。ランタイムを作成するダウンロードメニューがあるので、HashMapを追加し、そのHashMapにnames.get(i)とダウンロードリンクを追加して、次のようにします

map.put(names.get(i),"link"),

今execute()で、私は追加しましたWindow.open(map.get(menuItem.gettext()),"_blank");

プロジェクトにあるもう 1 つのメニューはレポート メニューなので、データベースからレポート リストが表示されます。

for(final Temp report : listReports){
    MenuItem menuItem = new MenuItem(report.getType().toString(), new Command() {
        @Override
                public void execute() {
                    getUiHandlers().showReportPanel(report);
                }
            });
        reportMenuBar.addItem(menuItem);
 }
于 2013-03-22T13:19:03.490 に答える
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 );              

    }
于 2013-03-22T13:20:02.553 に答える
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
    }
}
于 2013-03-22T12:47:03.277 に答える