package mobi.pharmaapp.view; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Filter; import android.widget.TextView; import mobi.pharmaapp.R; import mobi.pharmaapp.util.Pharmacy; import java.util.ArrayList; /** * * @author see /AUTHORS */ public class PharmacyAdapter extends ArrayAdapter<Pharmacy> { private ArrayList<Pharmacy> objects; private ArrayList<Pharmacy> original; private Context context; public PharmacyAdapter(Context context, int textViewResourceId, ArrayList<Pharmacy> objects) { super(context, textViewResourceId, objects); this.objects = objects; original = new ArrayList<Pharmacy>(); original.addAll(objects); this.context = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(R.layout.list_item, null); } TextView tt = (TextView) v.findViewById(R.id.toptext); try { tt.setText(objects.get(position).getName()); } catch (NullPointerException e) { tt.setText(context.getString(R.string.loading)); } return v; } @Override public Filter getFilter() { return new Filter() { @Override protected FilterResults performFiltering(CharSequence charSequence) { FilterResults results = new FilterResults(); if (charSequence == null || charSequence.length() == 0) { results.values = original; results.count = original.size(); } else { ArrayList<Pharmacy> filterResultsData = new ArrayList<Pharmacy>(); for (Pharmacy item : original) { if (item.matches(charSequence.toString())) { filterResultsData.add(item); } } results.values = filterResultsData; results.count = filterResultsData.size(); } return results; } @Override protected void publishResults(CharSequence charSequence, FilterResults filterResults) { objects.clear(); objects.addAll((ArrayList<Pharmacy>) filterResults.values); notifyDataSetChanged(); } }; } }