2

我正在使用 GWT 中的建议框,但我遇到了一个问题,即建议框.showSuggestionList() 没有通过 focusHandler 显示任何结果。

我创建了一个建议 oracle 和SuggestBox,如下所示

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

然后,当我从某处获得建议列表值(即建议数组)后,我将这些值添加到建议 oracle 中,例如

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

上面的代码是在视图中编写的,我将 FocusFandler 添加到 Presenter 中的这个SuggestBox 中,

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

可能是什么问题,为什么如果我们单击建议框,这个 showSuggestionList() 不显示任何建议?但是如果我们在建议框中输入一些文本,那么它会显示特定于输入的正确建议。即,如果我们输入a,它会显示所有建议都以a* 开头。

如果我在某个地方错了,如果有相同的情况或一些想法,有人可以帮忙吗?

4

1 回答 1

2

首先,要显示默认建议,您必须在调用 showSuggestionList 方法之前将空白字符串设置为 SuggestBox 中的文本我想建议列表中没有字符串以空格开头)。

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

秒,要显示所有建议,您必须使用MultiWordSuggestOracle对象的setDefaultSuggestionsFromText方法设置它们。

常量示例

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());
于 2016-03-16T09:04:29.673 回答