【问题标题】:Text box with suggestions带有建议的文本框
【发布时间】:2018-05-16 16:09:24
【问题描述】:

我目前正在使用带有术语列表的 AutoCompleteTextView,这些术语在用户输入时会给出建议。但是,我想使用不同的字符串算法,而不是简单地检查字符串是否包含您的搜索词,比较两个字符串的接近程度(例如,搜索“chcken”应该显示“chicken”)。

我已经生成了一个方法,它接受一个字符串参数 - 您的搜索查询 - 并在数据库中返回一个排序的字符串数组,该数组根据相关性匹配该查询。如何让 AutoCompleteTextView 使用该数组?我不能简单地在每次击键时将其附加到适配器,因为这不会改变 AutoCompleteTextView 的固有行为,仅显示数组中匹配字符串查询的元素。

【问题讨论】:

    标签: android string android-edittext textview autocompletetextview


    【解决方案1】:

    您可以在适配器中实现自定义过滤器。

    例子:

    public class MyFilterableAdapter extends ListAdapter<String> implements Filterable {
    
        @Override
        public Filter getFilter() {
            return new Filter() {
                @Override
                public String convertResultToString(Object resultValue) {
                    return (String) resultValue;
                }
    
                @Override
                protected FilterResults performFiltering(CharSequence constraint) {
                    FilterResults filterResults = new FilterResults();
                    filterResults.values = filteredArray;
                    filterResults.count = filteredArray.size();
                    return filterResults;
                }
    
                @Override
                protected void publishResults(CharSequence constraint, FilterResults results) {
                    if (results != null && results.count > 0) {
                        //here you will need to update the array where you are controlling what shows in the list
                        notifyDataSetChanged();
                    }
                }
            };
        }
    }
    

    由于您没有提供任何代码,我不知道您使用的是什么适配器,但您需要实现所有适配器方法(getCount、getView 等)。

    您可以在这些问题中找到更多信息:

    How to create custom BaseAdapter for AutoCompleteTextView

    Autocompletetextview with custom adapter and filter

    【讨论】:

    • 谢谢!这有很大帮助。我现在有一个可以工作的自定义适配器,但我仍然对 Android 很陌生,我的自动完成下拉菜单上的每个条目都显示了搜索栏的另一个副本......可能是因为我用 view = inflater.inflate( R.layout.fragment_search,viewGroup,假)。我应该在这里膨胀什么,我应该在 getView 中的哪里设置文本?
    • 编辑:全部修复。再次感谢您帮助我开始
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多