如何使SuggestBox(GWT)建议只使用建议的第一个单词?

时间:2013-10-30 07:05:10

标签: java gwt suggestbox

我的标题可能有点模糊,但我想让我的建议框建议像 这是当我在文本框中输入字母时:

在Recommendbox中输入的字母:A

A lpaca

A pple

A rgon

喜欢这样:

在Recommendbox中输入的字母:A

A lpaca a 可爱

A pple a nion

A rgon a ttire

有没有办法让建议框表现得像这样? 我只想要第一个单词匹配字母,不包括 带有多个单词的字符串。

我顺便在Eclipse中使用GWT。

编辑:我很擅长格式化,单词是

羊驼

苹果


羊驼急性

Apple负离子

氩气服装

再次编辑: 我希望它们看起来像这样:

条目:执行

建议:

执行

执行

执行人

条目:执行t

建议:

执行时间

执行计时器

执行标题

基本上我希望它像google搜索一样工作,只要我没有输入第二个字,就会出现多个措辞建议。

1 个答案:

答案 0 :(得分:2)

扩展SuggestOracle是要走的路!请检查下面的代码......一旦您的实现正确,请将您的oracle的新实例传递给SuggestBox。

s.startsWith(userInput)回答了您需求的核心。但是你当然可以写其他条件。

   public class MySuggestOracle extends SuggestOracle {

        private List<String> data;

        public MySuggestOracle(List<String> data) {
            this.data = data;
        }

        @Override
        public void requestSuggestions(final Request request, final Callback callback) {
            String userInput = request.getQuery();
            List<Suggestion> suggestions = new LinkedList<Suggestion>();
            for (final String s : data) {
                if (s.startsWith(userInput)) {
                    suggestions.add(new Suggestion() {
                        @Override
                        public String getReplacementString() {
                            return s;
                        }

                        @Override
                        public String getDisplayString() {
                            return s;
                        }
                    });
                }
            }
            Response response = new Response(suggestions);
            callback.onSuggestionsReady(request, response);
        }
    }