Skip to content

Instantly share code, notes, and snippets.

@Singhak
Created December 18, 2015 18:38
Show Gist options
  • Save Singhak/1f6276019b3610707969 to your computer and use it in GitHub Desktop.
Save Singhak/1f6276019b3610707969 to your computer and use it in GitHub Desktop.
This is custumadapter which is extending BaseAdapter and implementing Filterable
import java.util.ArrayList;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
public class CustomAdapter extends BaseAdapter implements Filterable{
LayoutInflater inflater;
//Here we are creating two ArrayList one for keeping original list and one for filtering purpose
ArrayList<String> datalist, filterlist;
//Here we are creating object of Itemfilter class which is extending Filter
private ItemFilter itemFilter = new ItemFilter();
public CustomAdapter(Activity activity, ArrayList<String> data){
inflater = activity.getLayoutInflater();
datalist = data;
filterlist = data;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return filterlist.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Viewholder holder;
View row = convertView;
if (row == null) {
row = inflater.inflate(R.layout.list_adapter, parent, false);
holder = new Viewholder(row);
row.setTag(holder);
}
holder = (Viewholder) row.getTag();
holder.textView.setText(filterlist.get(position));
return row;
}
public class Viewholder {
TextView textView;
public Viewholder(View view) {
textView = (TextView) view.findViewById(R.id.txtview);
}
}
// This will give us filter class object which is used in Main_activity
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
return itemFilter;
}
private class ItemFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// Here we are converting constraing which we get from edittext view to lower case
//so that there is no mismatch case and easy to check
String filterString = constraint.toString().toLowerCase();
FilterResults results = new FilterResults();
//Here we create arraylist which keep all filtered string
ArrayList<String> newfilteredList = new ArrayList<String>();
for (int i = 0; i < datalist.size(); i++) {
if(datalist.get(i).toLowerCase().contains(filterString)) {
newfilteredList.add(datalist.get(i));
}
}
// Here we are asign filtered list to result
results.values = newfilteredList;
results.count = newfilteredList.size();
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
//Now we asign result to filterlist which is used for adapter
filterlist = (ArrayList<String>) results.values;
// Now we notified the adapte
notifyDataSetChanged();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment