Created
December 18, 2015 18:38
-
-
Save Singhak/1f6276019b3610707969 to your computer and use it in GitHub Desktop.
This is custumadapter which is extending BaseAdapter and implementing Filterable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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