在autocompletetextview android中添加永久搜索标题

时间:2012-12-06 15:14:10

标签: android default custom-component autocompletetextview

我想在android中的自动完成文本视图中添加永久搜索结果。 例如:如果我在自动完成中输入'x'并且它显示酒店列表... xyz1,xyz2.etc ...那么最后的结果必须是“NOT IN LIST”值。如果用户无法找到他们的酒店,那么他们可以选择NOT IN LIST选项..

即使用户输入预测搜索无法提供的文本,“NOT IN LIST”应该是自动完成应该给出的唯一建议。我是Android新手。我正在做一个小app.Plz帮助..如果我必须使用自定义自动完成文本视图,那么我应该覆盖什么方法?如果是这样,请告诉我一个我必须覆盖的方法代码

2 个答案:

答案 0 :(得分:1)

以下是我在其中一个应用中使用的AutoCompleteAdapter。我希望这能解决你的问题

将适配器从下方设置为AutoCompleteTextView控件:

    ArrayAdapter<String> adapter = new AutoCompleteAdapter(this,
            R.layout.dropdown_item);

    autoComplete.setAdapter(adapter);

示例适配器:

private class AutoCompleteAdapter extends ArrayAdapter<String>
        implements Filterable {
    private ArrayList<String> mData;

    public AutoCompleteAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
        mData = new ArrayList<String>();
    }

    @Override
    public int getCount() {
        try {
            return mData.size();
        } catch (NullPointerException e) {
            return 0;
        }
    }

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

    @Override
    public Filter getFilter() {
        Filter myFilter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if (constraint != null) {
                    //This shows a progress to the user in my app. you don't need to use this
                    handle.sendEmptyMessage(MSG_SHOW_PROGRESS);
                    try {
                        //Fill mData with your data
                        mData = XmlParser.searchLocations(constraint
                                .toString());
                    } catch (Exception e) {
                        handle.sendEmptyMessage(MSG_HIDE_PROGRESS);
                    }
                    mData.add("NOT IN LIST");
                    filterResults.values = mData;
                    filterResults.count = mData.size();
                }
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence contraint,
                    FilterResults results) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged();
                    handle.sendEmptyMessage(MSG_HIDE_PROGRESS);
                } else {
                    notifyDataSetInvalidated();
                    handle.sendEmptyMessage(MSG_HIDE_PROGRESS);
                }
            }
        };
        return myFilter;
    }
}

答案 1 :(得分:0)

if (constraint != null) {

    try {
        for(int i=0;i<temp.size();i++)
        {
        if(temp.get(i).toString().startsWith(constraint.toString().toUpperCase()))
        {

        mData.add(temp.get(i).toString());  

        }
        }


        mData.add("SEARCH NOT THERE");

    } catch (Exception e) {

    }


         filterResults.values = mData;
         filterResults.count = mData.size();




}
return filterResults;

我已经完成了我的过滤...仍然显示所有结果,而不是我输入的任何结果...... :(