【问题标题】:AutoCompleteTextView not populating with selected itemAutoCompleteTextView 未填充所选项目
【发布时间】:2015-06-24 10:27:53
【问题描述】:

我已经做了很多 Google-fu,但我不知道出了什么问题。过滤工作,出现下拉列表。但是 AutoCompleteTextView 没有填充所选项目!有人可以帮忙吗?

我为显示自定义布局的 AutoCompleteTextView 设置了一个自定义适配器。

actv = (AutoCompleteTextView) root.findViewById(R.id.actv);
actv.setAdapter(new MyCustomAutoCompleteAdapter(getActivity()));

这里是重要部分MyCustomAutoCompleteAdapter代码:

public class MyCustomAutoCompleteAdapter extends ArrayAdapter<String> 
    implements Filterable {

    Context mContext;

    private ArrayList<String> resultList = new ArrayList<>();

    public MyCustomAutoCompleteAdapter(Context context) {
    // is this the correct way to super?
    super(context, R.layout.my_custom_layout);
    mContext = context;


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ...
        return convertView;
    }

    @Override
    public int getCount() {
        return resultList.size();
    }

    @Override
    public String getItem(int index) {
        return resultList.get(index);
    }

    @Override
    public Filter getFilter() {
        Filter filter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if (constraint != null) {
                    // Retrieve the autocomplete results.
                    resultList = doPlacesSearchQuery(constraint.toString());

                    // Assign the data to the FilterResults
                    filterResults.values = resultList;
                    filterResults.count = resultList.size();
                }
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged();
                }
                else {
                    notifyDataSetInvalidated();
                }
            }};
        return filter;
    }

    private ArrayList<String> doPlacesSearchQuery(String query) {

        ArrayList<String> retList = new ArrayList<>();

        ... // do my API call here

        return retList;
    }
}

【问题讨论】:

标签: android autocompletetextview


【解决方案1】:

我找到了答案;我确实使用了错误的超级构造函数。

public MyCustomAutoCompleteAdapter(Context context) {
    super(context, 
            R.layout.my_custom_layout, 
            R.id.id_of_textview_in_my_custom_layout);
    mContext = context;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    相关资源
    最近更新 更多