好的日子,我使用了可以過濾介面實現了這個自定義適配器,並在結果列表中獲得。public class SearchAutoCompleteAdapter extends BaseAdapter implements Filterable {
private ArrayList resultList;
List filteredProducts;
private LayoutInflater layoutInflater;
private Context context;
private int layout;
SearchAutoCompleteAPI searchautocomplete = new SearchAutoCompleteAPI();
public SearchAutoCompleteAdapter(Context context, int resource) {
super();
this.context = context;
this.layout = resource;
filteredProducts = new ArrayList();
resultList = new ArrayList();
}
@Override
public int getCount() {
return resultList.size();
}
@Override
public Object getItem(int index) {
return resultList.get(index);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(layout, null);
}
TextView name = (TextView) convertView.findViewById(R.id.suggestion_text_id);
name.setText(resultList.get(position).getName());
return convertView;
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
List tempfilteredProducts = new ArrayList
filteredProducts.clear();
if (constraint!= null || constraint.length()> 0) {
tempfilteredProducts.clear();
tempfilteredProducts = searchautocomplete.autocomplete(constraint.toString());//webservice call
} else {
tempfilteredProducts = new ArrayList();
}
for (BaseAutocompleteItems items : tempfilteredProducts) {
if (items.getName().contains(constraint.toString())) {
filteredProducts.add(items);
}
}
filterResults.values = filteredProducts;
filterResults.count = filteredProducts.size();
return filterResults;
}
@Override
protected void publishResults (CharSequence constraint, FilterResults results){
resultList = (ArrayList)results.values;
if(results.count> 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
;
return filter;
}
}
如果我鍵入"叫喊"並按backspace鍵或者增加我的字元到,我得到相同的結果,因此arraylist最終會得到重複的條目。 在填充列表之前,我嘗試清除列表,但似乎沒有什麼工作。