自动完成文本视图 Android。使用首字母完成。

4
我在autoCompleteTextView中使用的适配器如下所示:
  • -苹果 -梨子 -桔子 -香蕉 -葡萄
当前的工作方式是,如果我输入“p”,则下拉列表中将显示苹果,梨子和葡萄,因为它们匹配,但我只想显示梨子,因为它是唯一以“p”开头的单词。所以问题是:如何告诉autoComplete的dropDownList仅显示以我搜索的内容开头的单词,并且不显示包含在其他位置的单词。例如,如果我输入“pe”,我希望仅显示梨子,而不是葡萄,因为梨子以该字符串开头。 以下是我的代码:
ArrayList<String> data = dbHelper.getDataAsString();
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, data);
autoCompleteTv.setAdapter(adapter);
autoCompleteTv.setThreshold(2);
1个回答

1

请将此作为参考。我刚刚测试了这段代码,应该可以正常工作。

假设您的列表仅包含字符串类型。

private String[] searchableList = {"apple", "pear", "grape"};

我编写了这个函数,它接收一个查询参数query并返回格式化后的字符串列表。
    private List<String> filterQuery(String query) {
        // This takes all strings items which are valid with query
        List<String> filterList = new ArrayList<>();
        
        // Looping into each item from the list
        for (String currentString : searchableList) {
            // Make sure everything is lower case.
            String myString = currentString.toLowerCase(Locale.getDefault());
            // Take first two characters from the string, you may change it as required.
            String formatTitle = myString.substring(0, 2);
            // If query matches the current string add it to filterList
            if (formatTitle.contains(query)) {
                filterList.add(formatTitle);
            }
        }
        return filterList;
    }

让我知道进展情况。

1
嗨!是的!!这就是我想要的。非常感谢! 虽然我认为自动完成文本视图已经有了一个嵌入式函数,可以做到我所要求的。 - juske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接