【问题标题】:AutoComplete TextView Android. Complete with first letters自动完成 TextView Android。完成首字母
【发布时间】:2020-09-18 19:59:17
【问题描述】:

我在 autoCompleteTextView 中的适配器是这样的:

  • -苹果 -梨 -橙 -香蕉 -葡萄

如果我输入“p”,它现在的工作方式,在下拉列表中会出现苹果、梨和葡萄,因为它们匹配但我只是想要它显示 pear 因为是唯一以 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);

【问题讨论】:

    标签: java android android-studio autocompletetextview


    【解决方案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;
        }
    

    告诉我进展如何。

    【讨论】:

    • 嗨!是的!!这就是我想要的。非常感谢!我认为自动完成文本视图已经有一个嵌入功能,可以满足我的要求
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2015-07-28
    相关资源
    最近更新 更多