android - Items inside GridView Getting loaded again when Scroll up and down -


i'm using gridview show number of images thumbnails of images user can choose 1 of them , show image in full screen. each item of grid consisted imageview only, image retrieved remote server.

when item touched, activity started show image in full screen.

here used universal image loader. , here used same way gridview this class part of universal image loader.

i thought going right, until i've noticed items getting repeated , loading again when scrolls screen.

so put displayimage logic in convertview== null part whenever scroll down trough grid, , back, items change itÅ› position , duplicated. items imageview(thumbnails) duplicated in many items actual content different can see when click on item. , scrolling slow rather first code.

so main problems are

if using first code :

1) if used 1st code images(items) getting loaded again , again when scroll down or scroll up.

if using second code :

2) if used second code items (image thumbnails) shows duplicated , shows other image's thumbnail. 3) gridview scrolling slow.

code : 1

public class imageadapter extends baseadapter {     arraylist<gallaryimage> imagelist = null;     private context context;      private class viewholder {         public imageview image;         public progressbar pb;     }      public imageadapter(final context context,             final arraylist<gallaryimage> imageattributeslist) {         this.imagelist = imageattributeslist;         this.context = context;      }      @override     public int getcount() {         return imagelist.size();     }      @override     public gallaryimage getitem(final int position) {         return imagelist.get(position);     }      @override     public long getitemid(final int position) {         return position;     }      @override     public view getview(final int position, final view convertview,             final viewgroup parent) {         view view = convertview;         viewholder holder = null;         if (convertview == null) {              layoutinflater inflater = (layoutinflater) context                     .getsystemservice(context.layout_inflater_service);             view = inflater                     .inflate(r.layout.item_grid_image, parent, false);             holder = new viewholder();             holder.pb = (progressbar) view.findviewbyid(r.id.pb_grid_image);             holder.image = (imageview) view.findviewbyid(r.id.grid_image);             view.settag(holder);         } else {             holder = (viewholder) view.gettag();         }         display(holder.image, imagelist.get(position).mimageurl, holder.pb);         return view;     }      /**      * @param img      * @param url      * @param spinner      */     public void display(imageview img, string url, final progressbar spinner) {         imageloader.displayimage(url, img, options,                 new imageloadinglistener() {                     @override                     public void onloadingstarted(string imageuri, view view) {                         spinner.setvisibility(view.visible);                     }                      @override                     public void onloadingfailed(string imageuri, view view,                             failreason failreason) {                         spinner.setvisibility(view.gone);                      }                      @override                     public void onloadingcomplete(string imageuri,                             view view, bitmap loadedimage) {                         spinner.setvisibility(view.gone);                     }                      @override                     public void onloadingcancelled(string imageuri,                             view view) {                      }                  });     }      /**      * @param updatedata      */     public void updateddata(arraylist<gallaryimage> imglist) {         this.imagelist = imglist;         notifydatasetchanged();     } } 

code : 2

private static final string tag = "[photography: imagegridactivity]"; private displayimageoptions options; private gridview mgridview = null; arraylist<gallaryimage> mgridviewimageslist; private imageadapter mimageadapter = null; private string mimageurl = null; private string mgallarytitle = null;  @override public void oncreate(final bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_image_grid);     options = new displayimageoptions.builder()             .showimageonfail(r.drawable.ic_error)             .showstubimage(r.drawable.photo_default).cacheondisc()             .bitmapconfig(bitmap.config.rgb_565).build();      final bundle bundle = getintent().getextras();     if (bundle != null) {         mimageurl = bundle.getstring(constants.gallary_fetch_url);          mgallarytitle = bundle.getstring(constants.gallary_type);         if (mgallarytitle != null) {              locale loc = locale.getdefault();             textview tvtitletext = (textview) findviewbyid(r.id.tv_title_bar_text);             tvtitletext.settext(mgallarytitle.touppercase(loc));         }         mgridview = (gridview) findviewbyid(r.id.gridview);          mgridviewimageslist = utility.getimageslist(mimageurl,                 imagegridactivity.this);          if (mgridviewimageslist != null && !mgridviewimageslist.isempty()) {             mimageadapter = new imageadapter(imagegridactivity.this,                     mgridviewimageslist);             ((gridview) mgridview).setadapter(mimageadapter);         } else {             // did refresh after previous images loaded in             // gridview.             if (utility.checkconnection(imagegridactivity.this)) {                 log.i(tag,                         "wifi/internet connection found , have parse xml");                  final fetchimagesasynctaskfeed asynctask = new fetchimagesasynctaskfeed(                         true);                 asynctask.execute(mimageurl);              }          }          mgridview.setonitemclicklistener(new onitemclicklistener() {             @override             public void onitemclick(final adapterview<?> parent,                     final view view, final int position, final long id) {                  if (mgridviewimageslist != null                         && !mgridviewimageslist.isempty()) {                     startimagepageractivity(mgridviewimageslist, position);                 } else {                     log.d(tag, "there no image grid image");                 }             }         });      }  }  /**  * button key event  */ private void goback() {     finish();     // overridependingtransition(r.anim.slide_in_right,     // r.anim.slide_out_right); }  @override public boolean onkeyup(int keycode, keyevent event) {     if (keycode == keyevent.keycode_back) {         goback();         return true;     }     return super.onkeyup(keycode, event); }  /**  * @param position  */ private void startimagepageractivity(         final arraylist<gallaryimage> mimageattributeslist,         final int position) {     string[] urls = new string[mimageattributeslist.size()];     final intent intent = new intent(this, imagepageractivity.class);     intent.putextra(constants.gallary_image_position_bundle_key, position);     (int = 0; < mimageattributeslist.size(); i++) {         urls[i] = mimageattributeslist.get(i).mimageurl;     }     intent.putextra(constants.gallary_images_image_bundle_key, urls);     startactivity(intent); }  public class imageadapter extends baseadapter {     arraylist<gallaryimage> imagelist = null;      private class viewholder {         public imageview image;         public progressbar pb;     }      public imageadapter(final context context,             final arraylist<gallaryimage> imageattributeslist) {         this.imagelist = imageattributeslist;      }      @override     public int getcount() {         return imagelist.size();     }      @override     public gallaryimage getitem(final int position) {         return imagelist.get(position);     }      @override     public long getitemid(final int position) {         return position;     }      @override     public view getview(final int position, final view convertview,             final viewgroup parent) {         view view = convertview;         final viewholder holder;         if (convertview == null) {             view = getlayoutinflater().inflate(r.layout.item_grid_image,                     parent, false);             holder = new viewholder();             holder.pb = (progressbar) view.findviewbyid(r.id.pb_grid_image);             holder.image = (imageview) view.findviewbyid(r.id.grid_image);             view.settag(holder);             display(holder.image, imagelist.get(position).mimageurl, holder.pb);         } else {             holder = (viewholder) view.gettag();         }         return view;     }      /**      * @param img      * @param url      * @param spinner      */     public void display(imageview img, string url, final progressbar spinner) {         imageloader.displayimage(url, img, options,                 new imageloadinglistener() {                     @override                     public void onloadingstarted(string imageuri, view view) {                         spinner.setvisibility(view.visible);                     }                      @override                     public void onloadingfailed(string imageuri, view view,                             failreason failreason) {                         spinner.setvisibility(view.gone);                      }                      @override                     public void onloadingcomplete(string imageuri,                             view view, bitmap loadedimage) {                         spinner.setvisibility(view.gone);                     }                      @override                     public void onloadingcancelled(string imageuri,                             view view) {                      }                  });     }      /**      * @param updatedata      */     public void updateddata(arraylist<gallaryimage> imglist) {         this.imagelist = imglist;         notifydatasetchanged();     } }  /**  * @author  *   */ private class fetchimagesasynctaskfeed extends         asynctask<string, void, string> {     progressbar progressbar = null;     boolean showprogress = false;      public fetchimagesasynctaskfeed(boolean showprogress) {         this.showprogress = showprogress;     }      @override     protected void onpreexecute() {         if (showprogress) {              progressbar = (progressbar) imagegridactivity.this                     .findviewbyid(r.id.gv_progressbar);             progressbar.setvisibility(view.visible);          }     }      @override     protected string doinbackground(final string... urls) {         try {             final string imageurl = urls[0];             final gridviewimagesxmlhandler mgallaryxmlhandler = new gridviewimagesxmlhandler();             mgridviewimageslist = mgallaryxmlhandler.getimages(imageurl);             if (mgridviewimageslist != null                     && !mgridviewimageslist.isempty()) {                 utility.setimagesinfromation(imageurl, mgridviewimageslist,                         imagegridactivity.this);             }         } catch (final exception e) {             log.e(tag, "exception in fetch images url", e);         }         return null;     }      @override     protected void onpostexecute(final string result) {         if (mgridviewimageslist != null && !mgridviewimageslist.isempty()) {             if (mimageadapter != null) {                 mimageadapter.updateddata(mgridviewimageslist);                 // mpullrefreshgridview.onrefreshcomplete();             } else {                 mimageadapter = new imageadapter(imagegridactivity.this,                         mgridviewimageslist);                 ((gridview) mgridview).setadapter(mimageadapter);             }         }         // mpullrefreshgridview.onrefreshcomplete();         if (progressbar != null) {             progressbar.setvisibility(view.gone);         }     } } 

gridview xml file

<gridview     android:id="@+id/gridview"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:layout_below="@id/title_bar"     android:alwaysdrawnwithcache="true"     android:gravity="center"     android:horizontalspacing="4dip"     android:numcolumns="4"     android:scrollingcache="true"     android:smoothscrollbar="true"     android:stretchmode="columnwidth"     android:verticalspacing="4dip" /> 

please me sort out problem. help.

thanks

because setting background of imageview everytime comes inside getview(). getview() call every time when 1 item becomes visible user (its happening when scrolling). baseadapter recycle view compelled set data after if , else condition. save all images inside 1 disklrucache load them faster , check if present there show there else download , add disklrucache


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -