android - I have one issue on implementing RecyclerView with horizontal and vertical scrolling -


i want implement recyclerview horizontal , vertical scrolling , 1 button on vertical item when clicked on button text should changed save saved. in app when clicked on button, text changed when scrolling down automatically button's text changed. below code.

in screenshot clicked on verticallist3's button , text changed successfully

when scrolled down automatically verticallist20 , verticallist14's button text changed

 public class mainactivity extends appcompatactivity { private recyclerview vertical_recycler_view,horizontal_recycler_view; private arraylist<string> horizontallist,verticallist; private horizontaladapter horizontaladapter; private  verticaladapter verticaladapter;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     vertical_recycler_view= (recyclerview) findviewbyid(r.id.vertical_recycler_view);     horizontal_recycler_view= (recyclerview) findviewbyid(r.id.horizontal_recycler_view);        horizontallist=new arraylist<>();     horizontallist.add("horizontal 1");     horizontallist.add("horizontal 2");     horizontallist.add("horizontal 3");     horizontallist.add("horizontal 4");     horizontallist.add("horizontal 5");     horizontallist.add("horizontal 6");     horizontallist.add("horizontal 7");     horizontallist.add("horizontal 8");     horizontallist.add("horizontal 9");     horizontallist.add("horizontal 10");     horizontallist.add("horizontal 11");     horizontallist.add("horizontal 12");     horizontallist.add("horizontal 13");     horizontallist.add("horizontal 14");     horizontallist.add("horizontal 15");     horizontallist.add("horizontal 16");     horizontallist.add("horizontal 17");     horizontallist.add("horizontal 18");     horizontallist.add("horizontal 19");     horizontallist.add("horizontal 20");       verticallist=new arraylist<>();     verticallist.add("verticallist 1");     verticallist.add("verticallist 2");     verticallist.add("verticallist 3");     verticallist.add("verticallist 4");     verticallist.add("verticallist 5");     verticallist.add("verticallist 6");     verticallist.add("verticallist 7");     verticallist.add("verticallist 8");     verticallist.add("verticallist 9");     verticallist.add("verticallist 10");     verticallist.add("verticallist 11");     verticallist.add("verticallist 12");     verticallist.add("verticallist 13");     verticallist.add("verticallist 14");     verticallist.add("verticallist 15");     verticallist.add("verticallist 16");     verticallist.add("verticallist 17");     verticallist.add("verticallist 18");     verticallist.add("verticallist 19");     verticallist.add("verticallist 20");      horizontaladapter=new horizontaladapter(horizontallist);           verticaladapter=new verticaladapter(verticallist);       linearlayoutmanager verticallayoutmanager             = new linearlayoutmanager(mainactivity.this,  linearlayoutmanager.vertical, false);     vertical_recycler_view.setlayoutmanager(verticallayoutmanager); //        recyclerview.layoutmanager mlayoutmanager = new  linearlayoutmanager(getapplicationcontext()); //        vertical_recycler_view.setlayoutmanager(mlayoutmanager);     linearlayoutmanager horizontallayoutmanagaer             = new linearlayoutmanager(mainactivity.this, linearlayoutmanager.horizontal, false);     horizontal_recycler_view.setlayoutmanager(horizontallayoutmanagaer);      vertical_recycler_view.setadapter(verticaladapter);     horizontal_recycler_view.setadapter(horizontaladapter); }    public class horizontaladapter extends  recyclerview.adapter<horizontaladapter.myviewholder> {      private list<string> horizontallist;      public class myviewholder extends recyclerview.viewholder {         public textview txtview;          public myviewholder(view view) {             super(view);             txtview = (textview) view.findviewbyid(r.id.txtview);         }     }       public horizontaladapter(list<string> horizontallist) {         this.horizontallist = horizontallist;     }      @override     public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {         view itemview = layoutinflater.from(parent.getcontext())                 .inflate(r.layout.horizontal_item_view, parent, false);          return new myviewholder(itemview);     }      @override     public void onbindviewholder(final myviewholder holder, final int position) {          holder.txtview.settext(horizontallist.get(position));         holder.txtview.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 toast.maketext(mainactivity.this,holder.txtview.gettext().tostring(),toast.length_short).show();             }         });     }      @override     public int getitemcount() {         return horizontallist.size();     } }    public class verticaladapter extends recyclerview.adapter<verticaladapter.myviewholder> {      private list<string> verticallist;      public class myviewholder extends recyclerview.viewholder {         public textview txtview;         public button button;         public myviewholder(view view) {             super(view);             txtview = (textview) view.findviewbyid(r.id.txtview);             button = (button) view.findviewbyid(r.id.verticalbutton);         }     }       public verticaladapter(list<string> verticallist) {         this.verticallist = verticallist;     }      @override     public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {         view itemview = layoutinflater.from(parent.getcontext())                 .inflate(r.layout.vertical_item_view, parent, false);          return new myviewholder(itemview);     }      @override     public void onbindviewholder(final myviewholder holder, final int position) {         holder.button.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 holder.button.settext("saved");             }         });         holder.txtview.settext(verticallist.get(position));         holder.txtview.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                  toast.maketext(mainactivity.this,holder.txtview.gettext().tostring(),toast.length_short).show();             }         });     }      @override     public int getitemcount() {         return verticallist.size();     }   } } 

@potapov anton right can way.

implement method:

@override public int getitemviewtype(int position) {     return position; } 

hope helps


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -