package de.blau.android.util;
import java.util.ArrayList;
import java.util.Locale;
import android.content.Context;
import android.support.annotation.NonNull;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import de.blau.android.names.Names.NameAndTags;
class NameAndTagsAdapter extends ArrayAdapter<NameAndTags> {
// private final String MY_DEBUG_TAG = "NameAndTagsAdapter";
// private ArrayList<NameAndTags> items;
private ArrayList<NameAndTags> itemsAll;
private ArrayList<NameAndTags> suggestions;
// private int viewResourceId;
public NameAndTagsAdapter(Context context, int viewResourceId, ArrayList<NameAndTags> items) {
super(context, viewResourceId, items);
// this.items = items;
this.itemsAll = new ArrayList<NameAndTags>(items);
this.suggestions = new ArrayList<NameAndTags>();
// this.viewResourceId = viewResourceId;
}
// public View getView(int position, View convertView, ViewGroup parent) {
// View v = convertView;
// if (v == null) {
// LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// v = vi.inflate(viewResourceId, null);
// }
// NameAndTags customer = items.get(position);
// if (customer != null) {
// TextView customerNameLabel = (TextView) v.findViewById(R.id.customerNameLabel);
// if (customerNameLabel != null) {
//// Log.i(MY_DEBUG_TAG, "getView NameAndTags Name:"+customer.getName());
// customerNameLabel.setText(customer.getName());
// }
// }
// return v;
// }
@NonNull
@Override
public Filter getFilter() {
return nameFilter;
}
private Filter nameFilter = new Filter() {
@Override
public String convertResultToString(Object resultValue) {
return ((NameAndTags)(resultValue)).getName();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
if(constraint != null) {
suggestions.clear();
for (NameAndTags name : itemsAll) {
if(name.getName().toLowerCase(Locale.US).startsWith(constraint.toString().toLowerCase(Locale.US))){
suggestions.add(name);
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestions;
filterResults.count = suggestions.size();
return filterResults;
} else {
return new FilterResults();
}
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if(results != null && results.count > 0) {
ArrayList<NameAndTags> filteredList = (ArrayList<NameAndTags>) results.values;
clear();
for (NameAndTags c : filteredList) {
add(c);
}
notifyDataSetChanged();
}
}
};
}