package licola.demo.com.huabandemo.Module.Search;
import android.content.Context;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by LiCola on 2016/03/21 0:41
* 主要用在输入提示的adapter
*/
public class SearHintAdapter extends ArrayAdapter<String> {
private static final String TAG = "SearHintAdapter";
private Filter mFilter;
private List<String> mObjects;
public SearHintAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
mObjects = objects;
}
@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new HintFilter();
}
return mFilter;
}
/**
* <p>An array filter constrains the content of the array adapter with
* a prefix. Each item that does not start with the supplied prefix
* is removed from the list.</p>
* 重写过滤类 自定义一个不会过滤任何数的Filter
*/
private class HintFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
ArrayList<Object> suggestions = new ArrayList<Object>();
for (String s : mObjects) {
suggestions.add(s);
// Logger.d(s);
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestions;
filterResults.count = suggestions.size();
// Logger.d("filterResults.count=" + filterResults.count);
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
//noinspection unchecked
mObjects = (List<String>) results.values;
// Logger.d("results.count=" + results.count);
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}