2016-03-16 29 views
1

我正在GWT中的建議框,但我堅持一個問題,其中suggestionBox.showSuggestionList()不顯示通過focusHandler任何結果。爲什麼建議列表不會填入gwt中的建議框?

我創建了一個建議,Oracle和suggestBox如下

MultiWordSuggestOracle mySuggestionOracle=new MultiWordSuggestOracle(); 
SuggestBox mySuggestBox=new SuggestBox(mySuggestionOracle); 

當我suggestionList值從什麼地方的建議,即數組我這些值添加到建議甲骨文像

for(String str : suggestionList){ 
    mySuggestionOracle.add(str); 
} 

以上後,再代碼被寫入視圖中,並且我將FocusFandler添加到此提示器中的這個提示框中,因爲,

view.mySuggestBox().getValueBox().addFocusHandler(new FocusHandler() { 
     @Override 
     public void onFocus(FocusEvent event) { 
      view.mySuggestBox().setText(" "); 
      view.mySuggestBox().showSuggestionList(); 
     } 
    }); 

什麼是問題,爲什麼showSuggestionList()不顯示任何建議,如果我們點擊在提示框。但是如果我們在提示框中輸入一些文本,那麼它會顯示特定於輸入的適當建議。即,如果我們輸入它,則顯示所有建議都以a開頭。

如果我在某個地方出了問題,如果有相同的情況或一些想法,有人可以幫忙嗎?

回答

1

第一,顯示默認的建議,你必須設置空字符串作爲文本SuggestBox之前調用showSuggestionList方法(我想在suggestionList沒有字符串開始蒙山空格)。

public void onFocus(FocusEvent event) { 
    view.mySuggestBox().setText(""); 
    view.mySuggestBox().showSuggestionList(); 
} 

秒,顯示所有建議,您必須設置他們setDefaultSuggestionsFromTextMultiWordSuggestOracle對象的方法。

常數

的例子
final static String[] SUGGESTIONS = {"alfred", "alicia", "bernard", "bruno", "bernadette"}; 
final static List<String> suggestionList = new ArrayList<String>(Arrays.asList(SUGGESTIONS)); 

您的初始化代碼:

for (String str : suggestionList) { 
    mySuggestionOracle.add(str); 
} 
mySuggestionOracle.setDefaultSuggestionsFromText(suggestionList); 


mySuggestBox = new SuggestBox(mySuggestionOracle); 
mySuggestBox.setLimit(suggestionList.size()); 
+0

什麼,如果我創造我的自定義預言這將需要價值從數據庫中通過異步調用的My Oracle類中? –