Skip to content

Instantly share code, notes, and snippets.

@waleoyediran
Last active August 29, 2015 14:27
Show Gist options
  • Save waleoyediran/9ac8e7a7f76eb685f480 to your computer and use it in GitHub Desktop.
Save waleoyediran/9ac8e7a7f76eb685f480 to your computer and use it in GitHub Desktop.
Simple Search Adapter
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* Custom Search Adapter
* Created by oyewale
*/
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder> implements Filterable {
private Context mContext;
private List<SearchEntity> itemList;
private List<SearchEntity> subItems;
public PeopleListAdapter(Context context){
this.mContext = context;
itemList = getItemList(); // load your dataset
subItems = itemList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(
R.layout.row_search_item, parent, false
));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final SearchEntity item = subItems.get(position);
holder.item.setText(item.getText());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//handle onClick here
}
});
}
@Override
public int getItemCount() {
return subItems.size();
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
List<SearchItem> filterList = new ArrayList<>();
if (constraint != null && constraint.toString().length() > 0) {
for (int index = 0; index < itemList.size(); index++) {
SearchItem item = itemList.get(index);
String itemText = item.getText();
if (itemText.toLowerCase().startsWith(constraint.toString().toLowerCase())) {
filterList.add(item);
}
}
results.values = filterList;
results.count = filterList.size();
} else {
synchronized (itemList) {
results.values = itemList;
results.count = itemList.size();
}
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
subItems = (ArrayList<SearchItem>) results.values;
notifyDataSetChanged();
}
};
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView item;
public ViewHolder(View itemView) {
super(itemView);
item = (TextView) itemView.findViewById(R.id.text_view);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment