我想在android中的自动完成文本视图中添加永久搜索结果。 例如:如果我在自动完成中输入'x'并且它显示酒店列表... xyz1,xyz2.etc ...那么最后的结果必须是“NOT IN LIST”值。如果用户无法找到他们的酒店,那么他们可以选择NOT IN LIST选项..
即使用户输入预测搜索无法提供的文本,“NOT IN LIST”应该是自动完成应该给出的唯一建议。我是Android新手。我正在做一个小app.Plz帮助..如果我必须使用自定义自动完成文本视图,那么我应该覆盖什么方法?如果是这样,请告诉我一个我必须覆盖的方法代码
答案 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;
我已经完成了我的过滤...仍然显示所有结果,而不是我输入的任何结果...... :(