首页 > 解决方案 > 自动完成 TextView Android。完成首字母

问题描述

我在 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);

标签: javaandroidandroid-studioautocompletetextview

解决方案


以此为参考。我只是在制作后测试了这段代码,它应该可以正常工作。

假设您的列表仅属于字符串类型。

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;
    }

让我知道事情的后续。


推荐阅读