menu - How to Implement Filter for search in RecyclerView Android? -


i have recyclerview , working , need implement filter search recyclerviewi 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

Popular posts from this blog

jquery - uncaught exception: DataTables Editor - remote hosting of code not allowed -

java - SSE Emitter : Manage timeouts and complete() -

java - How to resolve error - package com.squareup.okhttp3 doesn't exist? -