menu - How to Implement Filter for search in RecyclerView Android? -
i have recyclerview
, working , need implement filter search recyclerview
i search in internet cannot success , want me implement filter in recyclerview
code , please try me
this recyclerview activity
public class todolist extends appcompatactivity implements dialogfragupdatelistener { recyclerview todorecyclerview; private recyclerview.adapter todoadapter; private recyclerview.layoutmanager todolayoutmanager; public list<todo> results; public list<string> list = new arraylist<>(); todorecycleradapter recycleradapter; context context; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_todo_list); todorecyclerview = (recyclerview)findviewbyid(r.id.todorecyclerview); todorecyclerview.sethasfixedsize(true); results= new arraylist<todo>(); todolayoutmanager = new linearlayoutmanager(this); todorecyclerview.setlayoutmanager(todolayoutmanager); getretrofitobject(); floatingactionbutton fab = (floatingactionbutton) findviewbyid(r.id.fab); fab.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent intent = new intent(todolist.this,addtodo.class); startactivity(intent); } });} public void getretrofitobject() { retrofit retrofit = new retrofit.builder() .baseurl(base_url) .addconverterfactory(gsonconverterfactory.create()) .build(); apiservice service = retrofit.create(apiservice.class); call<result> call = service.getresults(); call.enqueue(new callback<result>() { @override public void onresponse(call<result> call, response<result> response) { results = response.body().getresults(); todorecyclerview.setadapter(new todorecycleradapter(this,results)); } @override public void onfailure(call<result> call, throwable t) { log.d("onfailure", t.tostring()); }});} public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.menu_search, menu); menuitem searchitem = menu.finditem(r.id.action_search); searchview searchview = (searchview) menuitemcompat.getactionview(searchitem); searchview.setonquerytextfocuschangelistener(new view.onfocuschangelistener() { @override public void onfocuschange(view v, boolean hasfocus) { } }); searchview.setonquerytextlistener(new searchview.onquerytextlistener() { @override public boolean onquerytextsubmit(string query) { return true; } @override public boolean onquerytextchange(string searchquery) { return true; } }); menuitemcompat.setonactionexpandlistener(searchitem, new menuitemcompat.onactionexpandlistener() { @override public boolean onmenuitemactioncollapse(menuitem item) { return true; } @override public boolean onmenuitemactionexpand(menuitem item) { return true; } }); return true; }
and adapter
public class todorecycleradapter extends recyclerview.adapter<todorecycleradapter.viewholder> { static list<todo> todoresults; static context context; list<string> results; private list<todo> orig; private list<todo> items; private arraylist<todo> arraylist = null, stringarraylist; public todorecycleradapter(callback<result> callback, list<todo> results) { this.todoresults = results; arraylist = (arraylist<todo>) results; } @override public todorecycleradapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) { view itemlayoutview = layoutinflater.from(parent.getcontext()).inflate(r.layout.todo_items, null); viewholder viewholder = new viewholder(itemlayoutview); return viewholder; } @override public void onbindviewholder(final todorecycleradapter.viewholder holder, final int position) { holder.todotitle.settext(todoresults.get(position).gettodo_title().tostring()); string priority = todoresults.get(position).getpriority().tostring(); if (priority.equals("low")) { holder.todoimage.setimageresource(r.drawable.low); } else if (priority.equals("normal")) { holder.todoimage.setimageresource(r.drawable.normal); } else if (priority.equals("high")) { holder.todoimage.setimageresource(r.drawable.high); } } @override public int getitemcount() { return todoresults.size(); } public static class viewholder extends recyclerview.viewholder { public textview todotitle; public imageview todoimage; public viewholder(view itemlayoutview) { super(itemlayoutview); todotitle = (textview) itemlayoutview.findviewbyid(r.id.todo_title); todoimage = (imageview) itemlayoutview.findviewbyid(r.id.imageview2); } }
please try me because method main functionally in app
you can use your_adapter.getfilter().filter(searchquery) in onquerytextchange.
Comments
Post a Comment