I was able to resolve the issue, just made simple tweaks like removing the drawableMap we just need the imageCache.
On Sat, Apr 10, 2010 at 10:51 AM, Prajakta Shitole <[email protected]>wrote: > Forgot to paste my code:- > > class IconicAdapter extends ArrayAdapter { > Activity context; > Context context2; > HashMap<String,String> ret = new HashMap<String,String>(); > AsyncLoader async;// = new AsyncLoader(); > private ListView listView; > HashMap<String,Bitmap> bit = new HashMap<String,Bitmap>(); > > > IconicAdapter(Activity context) { > super(context, R.layout.exclusive, items); > this.context=context; > async = new AsyncLoader(); > } > > public View getView(final int position, View convertView, > ViewGroup parent) { > View row_inflated = View.inflate(context, R.layout.exclusive,null); > wrapper = new ViewWrapper(row_inflated); > row_inflated.setTag(wrapper); > > wrapper.getSongName().setText(items[position]); > wrapper.getSingerName().setText(singer_name[position]); > final ImageView imgview = wrapper.getIcon(); > imgview.setTag(myRemoteImages[position]); > Bitmap cachedImage = async.loadDrawable(myRemoteImages[position], new > ImageCallback() { > public void imageLoaded(Bitmap imageBitmap, String imageUrl) { > imgview.setImageBitmap(imageBitmap); > notifyDataSetChanged(); > } > }); > if(cachedImage!=null) > imgview.setImageBitmap(cachedImage); > return(row_inflated); > } > } > > > ====================================================================== > AsynLoader is as below:- > > public class AsyncLoader{ > HashMap<String,Bitmap> bit = new HashMap<String,Bitmap>(); > private HashMap<String, SoftReference<Bitmap>> imageCache; > private HashMap<String, SoftReference<Bitmap>> drawableMap; > public AsyncLoader() { > drawableMap = new HashMap<String, SoftReference<Bitmap>>(); > imageCache = new HashMap<String, SoftReference<Bitmap>>(); > } > public Bitmap loadDrawable(final String imageUrl, final ImageCallback > imageCallback) { > if (drawableMap.containsKey(imageUrl)) { > SoftReference<Bitmap> softReference = imageCache.get(imageUrl); > Bitmap drawable = softReference.get(); > if (drawable != null) { > return drawable; > } > } > final Handler handler = new Handler() { > @Override > public void handleMessage(Message message) { > imageCallback.imageLoaded((Bitmap) message.obj, imageUrl); > } > }; > new Thread() { > @Override > public void run() { > Bitmap bitMap = loadImageFromUrl(imageUrl); > imageCache.put(imageUrl, new > SoftReference<Bitmap>(bitMap)); > Message message = handler.obtainMessage(0, bitMap); > handler.sendMessage(message); > } > }.start(); > return null; > } > > public static Bitmap loadImageFromUrl(String url){ > > > URL aURL; > Bitmap bitmap=null;//=this.bm; > try { > aURL = new URL(url); > URLConnection conn; > conn = aURL.openConnection(); > conn.connect(); > InputStream is= conn.getInputStream(); > BufferedInputStream bis = new BufferedInputStream(is); > bitmap = BitmapFactory.decodeStream(bis); > // bitMap.put(p,bm); > bis.close(); > is.close(); > > > } catch (MalformedURLException e) { > e.printStackTrace(); > } catch (IOException e) { > e.printStackTrace(); > } > return bitmap; > } > > public interface ImageCallback { > public void imageLoaded(Bitmap imageBitmap, String imageUrl); > } > } > > > Thanks, > Prajakta > > > > On Sat, Apr 10, 2010 at 10:21 AM, praj <[email protected]> wrote: > >> Hi, >> >> I was trying to implement the lazy loading of images in the list view. >> For implementing this i was referring to post by Tom van Zummeren. >> (http://blog.jteam.nl/2009/09/17/exploring-the-world-of-android- >> part-2/<http://blog.jteam.nl/2009/09/17/exploring-the-world-of-android-part-2/>), >> but my images keep on changing in the list. Please can >> anyone let me know if they were able to get this working properly >> without having the images drawn again and again or let me know if I >> have missed on anything or doing something wrong. >> >> Thanks, >> Prajakta >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Developers" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected]<android-developers%[email protected]> >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en >> >> To unsubscribe, reply using "remove me" as the subject. >> > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

