0

シンプルな在庫管理アプリでは、従業員への機器タイプの割り当てを処理するアクティビティがあります (ユーザーが何かをチェックアウトした場合)。私が疑問に思っているのはこれです:

現在、機器を従業員にドラッグできる場所までドラッグアンドドロップしています。私が欲しいのは、機器がドラッグされるとすぐにポップアップが開き、ユーザーに確認と割り当てたい金額を尋ねることです。これは基本的に、2 つのエンティティ (equipmentCheckin と equipmentCheckout) の周りのエディターとして機能します。

私が直面している問題は次のとおりです:
1. ポップアップをビューで初期化し、ドロップ イベントで可視に設定する必要があります (これは私が計画していたことです) - これを行う際に、実際にエディターを適切に初期化する方法を教えてください (ドロップ時に呼び出される別のアクティビティがあります-あるとは思いませんが、エディターの部分が私を混乱させます

)そして、ドロップ イベントで set visible を true に呼び出すだけです (これが正しい方法だと思います)

。このもののまともな例。

以前に Google ミュージックを使用したことがある人のために、アルバムや曲の情報を編集するときに彼らが行っていることを正確に行いたいと考えています - 舞台裏で彼らがポップアップ付きのエディタを使用しているのを想像します - 何が正しいのか知りたいだけです実際にこれを行う方法は、ソリューションをハックする前です

4

1 に答える 1

1

あなたは正しい方向に進んでおり、ポップアップを自己完結型にし、それを助けることができればそれの単一のインスタンスだけを保持していると思います.

編集者の詳細に関する限り、意味をなさないものは何ですか? 一般的な考え方は、ドライバーを一度作成し、ポップアップ (エディターの実装) で初期化してから、新しいモデルで表示する準備ができるたびにドライバーで edit を呼び出すことができるということです。

私は通常、次のような結果になります(クラスがPopupを拡張し、Editorを実装し、内部で定義されたドライバーを持っていると仮定します)

public MyPopup() {
  //uibinder or other layout
  this.driver = GWT.create(Driver.class);
  driver.initialize(this);
}
public void edit(MyModel model) {
  driver.edit(model);
  show();
}

この回答を私自身のアプローチ/バイアスで味付けするために、ビューとプレゼンターの両方がインターフェイスであり、ビューが最終的にどのように描画されるかをプレゼンター実装が知らない MVP セットアップが好きです。一般的に私にとってはこのように見えます

public interface MyModelEditorView extends Editor<MyModel> {
  // this param is used in a mobile/table situation, where popups aren't as friendly
  void show(AcceptsOneWidget parent);

  // exposes the driver for the presenter * 
  SimpleBeanEditorDriver<MyModel, ?> getDriver();

  void setPresenter(Presenter presenter);

  public interface Presenter {
    // this is the only method that is called externally
    void show(AcceptsOneWidget parent, MyModel model);

    // called by click handlers in the view impl, probably by @UiHandler methods
    void onSaveClicked();
    void onCancelClicked();
  }
}

* プレゼンターはおそらくドライバーを制御して、エラーをチェックし、必要に応じてサーバーからエラーを渡し、新しいモデルを編集し、結果をフラッシュできるようにする必要があります。

于 2012-01-29T03:28:03.193 に答える