no i use CursorAdapter, as the underlying objects are coming out of 
the database. once the AsyncTask completes, i update the database 
record, so the next time round, it just inflates the bitmap and sets 
the imageview directly.

back in the day i did this synchronously and the scrolling sucked. 
but when the image loading is async, it's smooth -- at the price of a 
little book-keeping in the view recycling. another option is not to 
recycle at all, which in the end i might go for, as often i don't 
seem to be able to cancel AsyncTasks.

hth
j



>Thanks Jason, sounds good. Are you extending BaseAdapter for your
>listview adapter? I thought it'd be a bit slow since every time getView
>() is called, I have to do the re-setting of my row's ImageView, but
>it's for the most part pretty smooth, just wondering how you find
>performance in your case?
>
>Thanks
>
>On Nov 19, 5:07 pm, Jason Proctor <[email protected]>
>wrote:
>>  i have almost the same situation as you, but the way i do it is a
>>  little different --
>>
>>  when a list item view is made or recycled, it checks to see whether
>>  its image is loaded or not. if it's not, it kicks off an AsyncTask
>>  whose job it is to grab it using its URL. when that completes, it
>>  calls the list item view back again and that in turn inflates the
>>  bitmap and setImageBitmap() on the appropriate image view.
>>
>>  have to keep track of the view being recycled while the task is
>>  ongoing etc, but that awkwardness aside, this system seems to work ok.
>>
>>
>>
>>  >Hi,
>>
>>  >I have a ListView, its rows each have an image downloaded from the net
>>  >in a separate thread.
>>
>>  >When the image is done downloading, I notify my main thread, and need
>>  >to invalidate the corresponding row if it's on screen. I'm doing this:
>>
>>  >  // run on the main thread.
>>  >  public void onThumbnailDownloaded(String url, Bitmap bmp) {
>>  >      for (int i = 0; i < mListView.getChildCount(); i++) {
>>  >          PanelMyRow panel = (PanelMyRow)mListView.getChildAt(i);
>>  >          if (panel.getUrl().equals(url)) {
>>  >              panel.getImageView().setImageBitmap(bmp);
>>  >              break;
>>  >          }
>>  >      }
>>  >  }
>>
>>  >this seems to work ok. Ideally though, I think it'd be better if I
>>  >could somehow trigger my adapter to call its getView() method for this
>>  >'dirty' row. I can't find a method within ListView or BaseAdapter to
>>  >do this. Calling any of the invalidate methods has no effect, and any
>>  >of these:
>>
>>  >   ListView.invalidateViews()
>>  >   BaseAdapter.notifyDatasetInvalidated();
>>  >   BaseAdapter.notifyDatasetChanged();
>>
>>  >seem pretty heavyweight and my ListView scrolling will be very choppy
>>  >if the images are still downloading and one of the above three is
>>  >called during the callback. Is there some way I can simply mark the
>>  >child view as dirty which notifies the ListView that it should call
>>  >getView() on the adapter for that row again? Seems safer.
>>
>>  >Thanks
>>
>>  >--
>>  >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
>>
>>  --
>>  jason.vp.engineering.particle
>
>--
>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


-- 
jason.vp.engineering.particle

-- 
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

Reply via email to