自动完成文本视图 - 禁用筛选

我正在从 中检索字符串列表,并且我想将它们列在 a 上,而不考虑内置筛选器。webserviceAutoCompleteTextFieldAutoCompleteTextField

我该怎么做?有没有办法轻松禁用它的内部过滤(最好没有子类化),我已经将所有结果加载到一个中,问题是其中一些由于过滤而没有显示。ArrayAdapter

如果我走错了方向,请给我指出正确的方向。


答案 1

可能@Alon意味着子类化,而不是 。在方法中,必须返回一个自定义筛选器,该筛选器根本不执行任何筛选(在其中)。可能性能可能是一个问题 - 因为读取是生成的。最好的办法是从TextEdit派生并实现自己的完成弹出窗口。但到目前为止,这对我来说又太麻烦了。最后,我做了如下事情,它对我有用。任何反馈赞赏。ArrayAdapterAutoCompleteTextViewgetFilter()performFiltering()

public class KArrayAdapter<T> 
extends ArrayAdapter<T>
{
    private Filter filter = new KNoFilter();
    public List<T> items;

    @Override
    public Filter getFilter() {
        return filter;
    }

    public KArrayAdapter(Context context, int textViewResourceId,
            List<T> objects) {
        super(context, textViewResourceId, objects);
        Log.v("Krzys", "Adapter created " + filter);
        items = objects;
    }

    private class KNoFilter extends Filter {

        @Override
        protected FilterResults performFiltering(CharSequence arg0) {
            FilterResults result = new FilterResults();
                result.values = items;
                result.count = items.size(); 
            return result;
        }

        @Override
        protected void publishResults(CharSequence arg0, FilterResults arg1) {
            notifyDataSetChanged();
        }
    }
}

希望它有帮助。


答案 2

将文本设置为“自动完成文本视图”时,请使用 。将过滤器设置为 false,这将在不激活过滤器的情况下设置文本setText(CharSequence text, boolean filter)


推荐