Codename One - 从AutoComplete中获取所选文本

时间:2015-12-28 03:51:57

标签: codenameone

如何从自动完成文本字段中获取完整的选定文本?

如果我使用getText(),我只获得用户目前输入的几个字母。

示例:我写" flo"然后选择" Flowers"从列表中,但getText()给了我" flo"

AutoCompleteTextField auto = new AutoCompleteTextField(arrayWithNames);
auto.setMinimumLength(4);
auto.addListListener((ActionEvent evt1) -> {
    String lookedFor = auto.getText();
    Hashtable<String,Object> match[] = findMatch(lookedFor);
    if(hMatch.length>0){
        contElements.removeAll();
        for (Hashtable<String, Object> Match1 : match) {
            ...
            ...//fill the Container with the names found
            ...
        }
    }
});

工作原理

我使用自动完成TF作为搜索按钮。 我有一个包含列表中所有名称的数组。 然后我用数组填充Auto。 用户从Auto中选择一个名称,然后我搜索正在&#34; lookingFor&#34;使用findMatch()。它返回一个包含找到的条目的新数组。

我需要列表中的完整名称,所以我可以使用findMatch()方法,但是当我使用Auto中的getText()时,它只返回用户输入的字母,而不是整个名称,所以我的方法不起作用,因为我比较整个字符串。 (我正在使用Auto,因为如果人们只记得他们正在寻找的名称的一部分,那将非常方便)

2 个答案:

答案 0 :(得分:1)

如果您继承AutoCompleteTextField,则可以通过getSuggestionModel().getItemAt(getSuggestionModel().getSelectedIndex())在内部访问所选文本。现在,您可以在派生类上定义public getter方法getSelectedText()或其他内容。

答案 1 :(得分:0)

我不确定您是否正确使用了AutoCompleteTextBox。

AutoCompleteText框的全部用途是帮助您帮助用户从有效请求列表中进行选择,

在用户准备好提交AutoCompleteTB所在的表单之前,您不应该获得getText()的值。

如果你还没有看过这个会有所帮助: https://www.codenameone.com/javadoc/com/codename1/ui/AutoCompleteTextField.html#getPropertyTypes--

祝你好运!