android - Out of memory Exception using Picasso -


i need show images in view pager. show image in image view use picasso library. resize image using screen size.
in activity in oncreate got view pager:

mpager=(viewpager)findviewbyid(r.id.pager); mpageradapter = new screenslidepageradapter(); mpager.setadapter(mpageradapter);

then device size:

display display = getwindowmanager().getdefaultdisplay();     point size = new point();     display.getsize(size);     screenwidth = size.x;     screenheight = size.y; 

and here page adapter:

 private class screenslidepageradapter extends  pageradapter {     photoviewattacher attacher;      @override     public void destroyitem(view collection, int position, object o) {         view view = (view) o;         ((viewpager) collection).removeview(view);         view = null;     }      @override     public void finishupdate(view arg0) {         // todo auto-generated method stub      }      @override     public int getcount() {         return constants.imageurls.size();     }      @override     public object instantiateitem(view context, int position) {          layoutinflater ltinflater = getlayoutinflater();         view view = ltinflater.inflate(r.layout.page_fragment, null, false);         final imageview imageview = (imageview)view.findviewbyid(r.id.image);         attacher = new photoviewattacher(imageview);         attacher.setzoomable(true);          picasso.with(mainactivity.this).setindicatorsenabled(true);         picasso.with(mainactivity.this)                 .load(constants.imageurls.get(position))                 .resize(screenwidth, screenheight).centerinside()                 .into(imageview, new com.squareup.picasso.callback() {                     @override                     public void onsuccess() {                         if (attacher != null) {                             attacher.update();                         } else {                             attacher = new photoviewattacher(imageview);                         }                     }                      @override                     public void onerror() {                         // todo auto-generated method stub                         int = 0;                     }                 });                  ((viewpager) context).addview(view);         return view;     }      @override     public boolean isviewfromobject(view view, object object) {         return view == ((view) object);     }      @override     public void restorestate(parcelable arg0, classloader arg1) {         // todo auto-generated method stub     }      @override     public parcelable savestate() {         // todo auto-generated method stub         return null;     }      @override     public void startupdate(view arg0) {         // todo auto-generated method stub      }  } 

the problem when scroll 3 times first image last images not showing anymore , have out of memory in logs. please me!!!

i found problem. because every time created new view.

so next:

 list= createlistofimages();     mpager=(viewpager)findviewbyid(r.id.pager);     mpageradapter = new screenslidepageradapter(list);     mpager.setadapter(mpageradapter); 

and adapter:

   private class screenslidepageradapter extends  pageradapter {     list<view> pages;      public screenslidepageradapter(list<view> pages){         this.pages=pages;     }      @override     public void destroyitem(viewgroup container, int position, object object) {         container.removeview(pages.get(position));     }      @override     public int getcount() {         return constants.imageurls.size();     }      @override     public object instantiateitem(viewgroup container, int position) {         log.i(tag,"show image "+position);         view v = pages.get(position);         container.addview(v);         return v;     }      @override     public boolean isviewfromobject(view view, object object) {         return view == ((view) object);     }      @override     public void restorestate(parcelable arg0, classloader arg1) {         // todo auto-generated method stub     }      @override     public parcelable savestate() {         // todo auto-generated method stub         return null;     } } 

and of cource image next :

 @override protected void ondestroy() {     super.ondestroy();     (int i=0;i<constants.imageurls.size();i++){         imageview imageview = (imageview)list.get(i).findviewbyid(r.id.image);         imageview.setimagedrawable(null);     } } 

Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -