android - Loading images in a Listview properly -
i'm using universal image loader library load images in listview, loads images notice if scroll first time can see wrong images being loaded first before correct image.
how can stop effect. here entire class below.
public mylistadapter(context context, list<venuedetails> m_venue_details) { super(context, r.layout.venue_list_row, m_venue_details); this.context = context; this.venue_details = new arraylist<venuedetails>(); this.venue_details = m_venue_details; df = new decimalformat("#.##"); } @suppresswarnings("deprecation") @suppresslint("newapi") @override public view getview(int position, view v, viewgroup parent) { final viewholder holder; final venuedetails vd = venue_details.get(position); if (inflater == null) { inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); } if (v == null) { v = inflater.inflate(r.layout.venue_list_row, parent,false); holder = new viewholder(); holder.venue_name = (textview) v.findviewbyid(r.id.venue_name); holder.venue_dist = (textview) v.findviewbyid(r.id.venue_dist); holder.curr_loc = (textview) v.findviewbyid(r.id.curr_loc); holder.ll = (framelayout) v.findviewbyid(r.id.venue_frame); holder.pett_btn = (button) v.findviewbyid(r.id.venue_pett); holder.img = (imageview) v.findviewbyid(r.id.venue_logo); v.settag(holder); }else{ holder = (viewholder) v.gettag(); } holder.img.settag(vd.logo); if(vd.list_img == null){ myappobj.getimageloader().loadimage(holder.img.gettag().tostring(), new imageloadinglistener() { @override public void onloadingstarted(string imageuri, view view) { holder.img.setbackgroundresource(r.drawable.placeholder_venue); } @override public void onloadingfailed(string imageuri, view view, failreason failreason) { holder.img.setbackgroundresource(r.drawable.placeholder_pin); } @override public void onloadingcomplete(string imageuri, view view, bitmap loadedimage) { holder.img.setbackgrounddrawable(new bitmapdrawable(loadedimage)); if(vd.list_img == null){ vd.list_img = new bitmapdrawable(loadedimage); } } @override public void onloadingcancelled(string imageuri, view view) { holder.img.setbackgroundresource(r.drawable.placeholder_venue); } }); }else{ holder.img.setbackgrounddrawable(vd.list_img); } if(vd != null){ holder.venue_name.settext(vd.venuename.touppercase()); venue_details.get(position).venue_distance = double.parsedouble(df.format(utils.distance(myappobj.getmylatitude(), myappobj.getmylongitude(), vd.latitude, vd.longitude, 'k') * 0.000621371192)); holder.venue_dist.settext(df.format(vd.venue_distance)+" miles"); holder.venue_curr_loc.settext(my_address.touppercase()); if (vd.petted == 1) { holder.pett_btn.setvisibility(view.visible); holder.ll.setvisibility(view.visible); holder.pett_btn.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { if(dialog_callback!=null) dialog_callback.ondialogcalled(0, vd.id); } }); } else { holder.pett_btn.setvisibility(view.gone); holder.ll.setvisibility(view.gone); } } return v; } @override public boolean isenabled(int position) { if (venue_details.get(position).petted == 1) { return false; } else { return true; } } static class viewholder{ textview venue_name; textview venue_dist; textview venue_curr_loc; framelayout ll; button pett_btn; imageview img; }
the best solution use picasso easy use , better performace
Comments
Post a Comment