android - ImageView reference not getting updated after Passing Position of RecyclerView To PagerAdapter in order to update ImageView reference -


this customadapter class

public class customadapter extends pageradapter { context ctx;view v; int a[]=    {r.drawable.dbz,r.drawable.fatherandson,r.drawable.gohan,r.drawable.gohanssj,r.drawable.gohanssjb,r.drawable.gokussjb , r.drawable.gokussjg,r.drawable.songohan,r.drawable.vegitassjb,r.drawable.vegitassjg}; layoutinflater layoutinflater; button btn; customadapter(context ctx){     this.ctx=ctx; } @override public int getcount() {     return a.length; }  @override public boolean isviewfromobject(view view, object object) {     return (view==(relativelayout)object); }  @override public object instantiateitem(viewgroup container, final int position) {      layoutinflater=(layoutinflater) ctx.getsystemservice(context.layout_inflater_service);     view view=layoutinflater.inflate(r.layout.swipe_layout,container,false);     v=view;     imageview img=(imageview)view.findviewbyid(r.id.imgview);     btn =(button)view.findviewbyid(r.id.button);     img.setimageresource(a[position]);      btn.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             wallpapermanager wallpapermanager=wallpapermanager.getinstance(ctx);               try {                     wallpapermanager.setresource(a[position]);             } catch (ioexception e) {                 e.printstacktrace();             }         }     });     container.addview(view);     return view; }  @override public int getitemposition(object object) {     return position_none; }  @override public void destroyitem(viewgroup container, int position, object object) {     container.removeview((relativelayout)object); }  public void sendposition(int position) {     imageview img=(imageview)v.findviewbyid(r.id.imgview);     toast.maketext(ctx, ""+a[position], toast.length_short).show();     img.setimageresource(a[position]); } 

}

this mainactivity class

    public class mainactivity extends appcompatactivity {     private recyclerview recyclerview;     private recyclerview.layoutmanager layoutmanager;     private recyclerview.adapter adapter;     private arraylist<integer> mdataset;     viewpager viewpager;     customadapter adapter2;     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         viewpager=(viewpager)findviewbyid(r.id.viewpager);         adapter2=new customadapter(this);         viewpager.setadapter(adapter2);         mdataset = new arraylist<>();         mdataset.add(r.drawable.formatfactorydbz);         mdataset.add(r.drawable.formatfactoryfatherandson);         mdataset.add(r.drawable.formatfactorygohan);         mdataset.add(r.drawable.formatfactorygohanssj);         mdataset.add(r.drawable.formatfactorygohanssjb);         mdataset.add(r.drawable.formatfactorygokussjb);         mdataset.add(r.drawable.formatfactorygokussjg);         mdataset.add(r.drawable.formatfactorysongohan);         mdataset.add(r.drawable.formatfactoryvegitassjb);         mdataset.add(r.drawable.formatfactoryvegitassjg);         recyclerview = (recyclerview) findviewbyid(r.id.recycler_view);         recyclerview.sethasfixedsize(true);         layoutmanager = new linearlayoutmanager(this, linearlayoutmanager.horizontal, false);         recyclerview.setlayoutmanager(layoutmanager);         adapter = new mainadapter(mdataset);         recyclerview.setadapter(adapter);         recyclerview.addonitemtouchlistener(new recycleritemclicklistener(this, recyclerview, new recycleritemclicklistener.onitemclicklistener() {             @override             public void onitemclick(view view, int position) {                 // whatever                adapter2.sendposition(position);             }              @override             public void onlongitemclick(view view, int position) {                 // whatever             }         }));     } } 

i sending position of image sendposition method mainactivity customadapter , position value correct when toast when try fix image in imageview nothing happens. therefore, know doing wrong.

it happens because use adapter in wrong way. adapter creates several views via instantiateitem method , save last 1 in field v, out of screen. default viewpager invokes instantiateitem current position , near positions caching.

as understand code, should prefer invoke viewpager.setcurrentitem(position);


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -