From cfa472650954977ffb05baaed5dfdb64d2a2800e Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Mon, 20 Jan 2014 12:38:12 +0100 Subject: When we have a cached image, return it before checking its validity When image lists are displayed, we now return the cached image even if it might no longer be valid, then replace it with the valid one if it proves necessary. --- main/src/cgeo/geocaching/ui/ImagesList.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'main/src/cgeo/geocaching/ui') diff --git a/main/src/cgeo/geocaching/ui/ImagesList.java b/main/src/cgeo/geocaching/ui/ImagesList.java index 1cd5a48..4058e15 100644 --- a/main/src/cgeo/geocaching/ui/ImagesList.java +++ b/main/src/cgeo/geocaching/ui/ImagesList.java @@ -27,7 +27,6 @@ import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; -import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -97,22 +96,23 @@ public class ImagesList { descView.setVisibility(View.VISIBLE); } + final ImageView imageView = (ImageView) inflater.inflate(R.layout.image_item, null); + assert(imageView != null); subscriptions.add(AndroidObservable.fromActivity(activity, imgGetter.fetchDrawable(img.getUrl())) .subscribe(new Action1() { @Override public void call(final BitmapDrawable image) { - display(image, img, rowView); + display(imageView, image, img, rowView); } })); + rowView.addView(imageView); imagesView.addView(rowView); } } - private void display(final BitmapDrawable image, final Image img, final LinearLayout view) { + private void display(final ImageView imageView, final BitmapDrawable image, final Image img, final LinearLayout view) { if (image != null) { bitmaps.add(image.getBitmap()); - final ImageView imageView = (ImageView) inflater.inflate(R.layout.image_item, null); - assert(imageView != null); final Rect bounds = image.getBounds(); @@ -127,13 +127,14 @@ public class ImagesList { activity.registerForContextMenu(imageView); imageView.setImageDrawable(image); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); - imageView.setLayoutParams(new LayoutParams(bounds.width(), bounds.height())); + imageView.setLayoutParams(new LinearLayout.LayoutParams(bounds.width(), bounds.height())); view.findViewById(R.id.progress_bar).setVisibility(View.GONE); - view.addView(imageView); imageView.setId(image.hashCode()); images.put(imageView.getId(), img); + + view.invalidate(); } } -- cgit v1.1