Hi so i've been toying with this and can't seem to get the grip of it... My problem is that ConvertView always is null, and therefore a lot of imageoperations is being done everytime the gallery is scrolling or touched -> ergo i get an OOM exception...
My getView() is looking like this now, am I doing something wrong (obviously i must be...) public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { Controller co = Controller.GetInstance(); ImageView imageView = new ImageView(context); if(co.server.currRecord.image.get(position).containsKey("data")) { // we have a content URI and need to get it converted into a down scaled BitmapDrawable String uri = co.server.currRecord.image.get(position).get("data").toString(); co.server.currRecord.image.get(position).put("BM", FileConvert.BitmapFromContenturi(uri)); imageView.setImageDrawable((BitmapDrawable)co.server.currRecord.image.get(position).get("BM")); } else { //we have a web url and need to get it converted into a down scaled BitmapDrawable String url = (String)co.server.currRecord.image.get(position).get("url"); co.server.currRecord.image.get(position).put("BM", FileConvert.BitmapFromURL(url)); imageView.setImageDrawable((BitmapDrawable)co.server.currRecord.image.get(position).get("BM")); } imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); imageView.setBackgroundResource(itemBackground); return imageView; } else{ return convertView; } } - Lars On 26 Apr., 09:55, Romain Guy <romain...@android.com> wrote: > Hi, > > As written, your getView() method *never* reuses the convertView > parameter. This means you are creating new Views and new Bitmaps every > time the method is called, which happen very often while > scrolling/flinging a grid. > > You first need to start using the convertView when possible (if > convertView != null, cast it to an ImageView and set your drawable on > it.) Note that setting the scale type, layout params and background > resource should be done only when convertView == null. This will save > you a lot of time. > > Finally, you should create a cache for your bitmaps to avoid reloading > them all the time. > > I encourage you to read the source code of the following application > to see how to implement an efficient list of > images:http://code.google.com/p/shelves/ > > Also refer to my Google I/O 2009 talk about UI > optimization:http://code.google.com/events/io/2009/sessions/TurboChargeUiAndroidFa... > In this talk I describe how to implement getView() efficiently and > talk about image caches briefly at the end. > > > > On Mon, Apr 26, 2010 at 12:50 AM,Lars<axberg.l...@gmail.com> wrote: > > Hi > > > I have a gallery in wich I show a row of images, the images can both > > be from the Camera gallery or from the internet as a web url. My > > getView() method makes an exception when I put to many images from the > > gallery inside it. Should i down sample the images before attaching > > them to the view? and how is that done ? heres my getView method: > > > public View getView(int position, View convertView, ViewGroup parent) > > { > > > Controller co = Controller.GetInstance(); > > > ImageView imageView = new ImageView(context); > > > if(co.server.currRecord.image.get(position).containsKey("data")) > > { > > // we have a content URI and assign it to the gallery > > > imageView.setImageURI((Uri)co.server.currRecord.image.get(position).get("data")); > > } > > else > > { > > //we have a web url and need our ImageOperation method to > > fetch and decode the drawable. > > > imageView.setImageDrawable(FileConvert.ImageOperations(context, > > Controller.GetInstance().server.currRecord.image.get(position).get("url").toString())); > > } > > > imageView.setScaleType(ImageView.ScaleType.FIT_XY); > > imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); > > imageView.setBackgroundResource(itemBackground); > > > return imageView; > > } > > > -Lars > > > -- > > You received this message because you are subscribed to the Google > > Groups "Android Developers" group. > > To post to this group, send email to android-developers@googlegroups.com > > To unsubscribe from this group, send email to > > android-developers+unsubscr...@googlegroups.com > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en > > -- > Romain Guy > Android framework engineer > romain...@android.com > > Note: please don't send private questions to me, as I don't have time > to provide private support. All such questions should be posted on > public forums, where I and others can see and answer them > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to android-developers@googlegroups.com > To unsubscribe from this group, send email to > android-developers+unsubscr...@googlegroups.com > For more options, visit this group > athttp://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en