Last active
August 29, 2015 14:27
-
-
Save waleoyediran/9ac8e7a7f76eb685f480 to your computer and use it in GitHub Desktop.
Simple Search Adapter
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 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