0

私が理解しているように、UIBinder で作成されたビューにウィジェットを動的に追加したい場合は、そのビューのプレゼンターであるアクティビティの start メソッドでそれを行います。

これが私のコードです:

@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
    view = clientFactory.getDashboardView();
    view.setPresenter(this);

    ArrayList<Department> deps = ModelFactory.getDepartments();
    view.passData(deps); // Correct?
    panel.setWidget(view.asWidget());

}



public void passData(ArrayList<Department> departments) {

TextCell text = new TextCell();
CellList<String> cellList = new CellList<String>(text);
String[] departmentNames = new String[departments.size()];
for (int i = 0; i < departments.size(); i++) {
    departmentNames[i] = departments.get(i).getName();
}
cellList.setRowData(Arrays.asList(departmentNames));
departmentsDiv.add(cellList);

}

できます。ただし、戻るボタンを使用して前の場所に移動して戻ると、ウィジェットが再度追加されます。

これを正しく処理するにはどうすればよいですか?

4

2 に答える 2

2

次の 2 つのオプションがあります。

  1. このビューにアクセスするたびにデータを更新したくない場合は、ビューにフラグを追加して、データが既に入力されているかどうかを確認する必要があります。次に、このビューが再びアクセスされたときにview.passData(deps);、フラグが false に設定されている場合にのみ、アクティビティが呼び出されます。データがロードされたら、フラグを true に設定します。

  2. 訪問ごとにデータを更新したい場合はdepartmentsDiv.clear()、新しい CellList を追加する前に呼び出します。

注意: より良いアプローチは、ビューが初めて表示されるときに CellList を一度作成しsetRowData、新しいデータが利用可能になったときにのみ呼び出すことです。

于 2016-02-24T10:36:21.930 に答える