`

AutoCompleteTextView全局匹配

 
阅读更多

       AutoCompleteTextView 这个东西做Android的应该都看过~没看过的去百度下吧,我就不多说了,问题是它怎么能自动补全的呢?

      这个是因为它setAdapter(adapter);,没错,你没看错,就是因为它设置了一个adapter。。。而它的过滤原则也是根据这个adapter中的Filter来的。

      一般网上的那些例子里面都是设置的一个ArrayAdapter,这个adapter里面的Filter看源码就能看出来是怎么过滤的:

 public Filter getFilter() {
        if (mFilter == null) {
            mFilter = new ArrayFilter();
        }
        return mFilter;
    }

    /**
     * <p>An array filter constrains the content of the array adapter with
     * a prefix. Each item that does not start with the supplied prefix
     * is removed from the list.</p>
     */
    private class ArrayFilter extends Filter {
        @Override
        protected FilterResults performFiltering(CharSequence prefix) {
            FilterResults results = new FilterResults();

            if (mOriginalValues == null) {
                synchronized (mLock) {
                    mOriginalValues = new ArrayList<T>(mObjects);
                }
            }

            if (prefix == null || prefix.length() == 0) {
                ArrayList<T> list;
                synchronized (mLock) {
                    list = new ArrayList<T>(mOriginalValues);
                }
                results.values = list;
                results.count = list.size();
            } else {
                String prefixString = prefix.toString().toLowerCase();

                ArrayList<T> values;
                synchronized (mLock) {
                    values = new ArrayList<T>(mOriginalValues);
                }

                final int count = values.size();
                final ArrayList<T> newValues = new ArrayList<T>();

                for (int i = 0; i < count; i++) {
                    final T value = values.get(i);
                    final String valueText = value.toString().toLowerCase();

                    // First match against the whole, non-splitted value
                    if (valueText.startsWith(prefixString)) {//看到没有~这就是匹配原则。。。就是这么蛋疼,就是这么酸爽
                        newValues.add(value);
                    } else {
                        final String[] words = valueText.split(" ");
                        final int wordCount = words.length;

                        // Start at index 0, in case valueText starts with space(s)
                        for (int k = 0; k < wordCount; k++) {
                            if (words[k].startsWith(prefixString)) {
                                newValues.add(value);
                                break;
                            }
                        }
                    }
                }

                results.values = newValues;
                results.count = newValues.size();
            }

            return results;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            //noinspection unchecked
            mObjects = (List<T>) results.values;
            if (results.count > 0) {
                notifyDataSetChanged();
            } else {
                notifyDataSetInvalidated();
            }
        }
    }

 所以,我的做法就是,直接复制整个ArrayAdapter类,然后将里面的那句原则改掉,改成  valueText.contains(prefixString)  ,这样在设置的时候设自定义的这个类,然后,然后就能看到全局匹配的AutoCompleteTextView了。

分享到:
评论

相关推荐

    AutoCompleteTextView自动匹配字符

    通过以上步骤和注意事项,我们可以灵活地在Android应用中实现AutoCompleteTextView的自动匹配字符功能,提升用户输入的便捷性和效率。结合实际需求,还可以进一步扩展,例如添加搜索历史记录、实时网络搜索等功能,...

    使用AutoCompleteTextView实现自动匹配输入的内容

    2. **数据源**:创建一个数据源,这可以是ArrayList、String数组或者其他可迭代的对象,包含可能的匹配项。例如,你可以这样创建一个ArrayList: ```java ArrayList&lt;String&gt; suggestions = new ArrayList(); ...

    android autocompletetextview 匹配项实现图文混排

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议项。这个控件广泛用于搜索框、地址输入等场景,提高用户体验。在标题“android autocompletetextview 匹配项...

    AutoCompleteTextView

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的输入控件,它允许用户在输入时自动显示建议的匹配项。这个控件通常用于创建搜索框或输入字段,为用户提供方便的输入体验。在本篇文章中,我们将深入探讨...

    AutoCompleteTextViewDemo

    4. **过滤与匹配**:AutoCompleteTextView内部实现了过滤逻辑,当用户输入文本时,会触发适配器的`getFilter()`方法,该方法返回一个Filter对象,用于过滤数据并提供匹配的建议。 5. **显示建议列表**:一旦过滤...

    自定义AutoCompleteTextView下拉列表控件

    1. **逐字提示**:在默认的`AutoCompleteTextView`中,当用户输入字符时,通常会显示与输入字符串完全匹配或部分匹配的建议列表。但逐字提示意味着,即使用户只输入了一个字符,也能根据这个字符显示出相关的建议,...

    使用autoCompleteTextView读取历史记录

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,通常用于实现搜索框或者输入补全功能。`AutoCompleteTextView` 结合历史记录功能,可以提供更加人性化...

    AutoCompleteTextView和自定义的CursorAdapter

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它提供了自动补全功能,用户在输入时可以根据预设的数据集得到建议的匹配项。这篇文章将深入探讨`AutoCompleteTextView` 的工作原理以及如何结合...

    AutoCompleteTextView中文和拼音关联自动提示

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,从而提升用户体验。本教程将详细讲解如何利用`AutoCompleteTextView` 实现中文和拼音关联的自动提示...

    AutoCompleteTextView输入汉字拼音首字母实现过滤提示

    android API中的 AutoCompleteTextView组件只能匹配过滤纯英文或者纯汉字的 经过改进后可以输入 汉字拼音匹配汉字 类似于百度搜索 例如输入x 会匹配“迅雷”“迅速” 如果输入s 也可以匹配 “迅速”

    AutoCompleteTextView汉字和拼音关联

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,从而提升用户体验。本知识点主要关注如何实现`AutoCompleteTextView`与汉字和拼音的关联,使得用户可以...

    AutoCompleteTextView自动完成文字输入

    AutoCompleteTextView是Android SDK提供的一种用于输入文本时自动补全的视图组件,它扩展了EditText,能够根据用户输入的部分文字动态显示出匹配的建议列表。这个功能在许多应用中非常常见,例如搜索引擎、地址...

    AutoCompleteTextView自动提示问题

    默认情况下,`AutoCompleteTextView`会使用`SimpleAdapter`的过滤逻辑,即模糊匹配(包含)用户输入的字符。如果需要自定义过滤规则,可以为`Adapter`设置自定义的`Filter`: ```java adapter.setFilter(new ...

    AutoCompleteTextView 显示更多

    当用户在文本框中输入时,它会提供一系列匹配的建议供用户选择,从而提高输入效率。这在处理大量可能输入(如联系人姓名、国家名称等)时尤其有用。 ### 默认表现及问题 默认情况下,AutoCompleteTextView的下拉...

    android中AutoCompleteTextView使用

    `AutoCompleteTextView` 是一个带下拉列表的文本输入框,当用户输入一部分内容后,会显示与之匹配的建议列表。其主要属性包括: 1. **android:completionThreshold**:定义触发下拉列表显示所需的最少字符数,默认...

    AutoCompleteTextView 自动提示联系人信息

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,极大地提高了用户体验。本篇将详细讲解`AutoCompleteTextView`如何用于自动提示联系人信息,并结合从...

    AutoCompleteTextView的简单使用

    AutoCompleteTextView是Android SDK提供的一种可以自动补全的文本输入框控件,它结合了EditText和ListView的功能,允许用户在输入时显示出与已输入内容匹配的建议列表。这个功能常见于许多应用程序,如搜索引擎、...

    Android仿百度谷歌自动提示——AutoCompleteTextView

    当用户在输入框中输入字符时,`AutoCompleteTextView`可以展示一个下拉列表,显示与已输入内容匹配的建议项。这种功能通常与数据源(如数组、列表或网络数据)结合使用,以提供动态的建议。 首先,我们需要在布局...

Global site tag (gtag.js) - Google Analytics