2 つのビューと 2 つのプレゼンターを持つアプリケーションがあります。SuggestionBox を使用した検索ボックス付きの固定トップ メニューがあります。データベースから候補リストを取得し、addAll(..) メソッドを使用してそれを SuggestionBox の MultiWordSuggestOracle にロードします。
私はUiBinderを使用しています。それは私のコードです:
@UiField (provided=true) SuggestBox searchEntriesSuggestBox;
MultiWordSuggestOracle oracle;
public MenuBar() {
oracle = new MultiWordSuggestOracle();
searchEntriesSuggestBox = new SuggestBox(oracle);
initWidget(uiBinder.createAndBindUi(this));
}
public void loadUserEntries(Collection<String> entries){
oracle.clear();
oracle.addAll(entries);
}
アプリを初めて実行するときは、loadUserEntries() を使用して候補を読み込みます。問題は、ビュー (およびプレゼンター) を変更するときです。SuggestBox は空の MultiWordSuggestOracle をロードするため、プレゼンターを変更するたびに提案を再度ロードする必要があります。
loadUserEntries メソッドの使用を避けるために、アプリの存続期間中は提案 (MultiWordSuggestOracle) をグローバル変数として維持したいと考えています。
グローバル変数 MultiWordSuggestOracle を定義してみました。Presenter をロードする必要があるたびに、グローバルな MultiWordSuggestOracle を使用して新しい SuggestBox を作成しました。しかし、うまくいきませんでした。
何か案が?
ありがとう。