Skip to content

Instantly share code, notes, and snippets.

@dracula151997
Last active June 13, 2020 16:30
Show Gist options
  • Save dracula151997/98f1ddd0bc6dde9a6af2bef89b9f4341 to your computer and use it in GitHub Desktop.
Save dracula151997/98f1ddd0bc6dde9a6af2bef89b9f4341 to your computer and use it in GitHub Desktop.
filter a recycler view data
package com.octopus.searchviewwithrecycler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> implements Filterable {
private List<String> list;
private List<String> filteredItem;
public ItemAdapter(List<String> list) {
this.list = list;
this.filteredItem = list;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_name,
parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String itemName = filteredItem.get(position);
holder.itemName.setText(itemName);
}
@Override
public int getItemCount() {
return filteredItem.size();
}
private Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String key = constraint.toString();
if (key.isEmpty()) {
filteredItem = list;
} else {
List<String> filteredList = new ArrayList<>();
for (String s : list) {
if (s.toLowerCase().contains(key.toLowerCase())) {
filteredList.add(s);
}
}
filteredItem = filteredList;
}
FilterResults results = new FilterResults();
results.values = filteredItem;
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredItem = (List<String>) results.values;
notifyDataSetChanged();
}
};
@Override
public Filter getFilter() {
return filter;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private TextView itemName;
public ViewHolder(@NonNull View view) {
super(view);
itemName = view.findViewById(R.id.item_name);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment