From ddbff6fd78d2b3286a81fad125818443a6907ccf Mon Sep 17 00:00:00 2001 From: Bobby Georgescu Date: Tue, 29 Jan 2013 13:30:12 -0800 Subject: Importer: when view is reused for same image, don't reload Bug: 7968780 Change-Id: I6786d140e516ff60562c5c0b1222fca0ea153216 --- src/com/android/gallery3d/ingest/adapter/MtpAdapter.java | 15 ++++++++++++++- .../android/gallery3d/ingest/ui/MtpThumbnailTileView.java | 12 ++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'src/com') diff --git a/src/com/android/gallery3d/ingest/adapter/MtpAdapter.java b/src/com/android/gallery3d/ingest/adapter/MtpAdapter.java index 3cf0df2cf..611d880db 100644 --- a/src/com/android/gallery3d/ingest/adapter/MtpAdapter.java +++ b/src/com/android/gallery3d/ingest/adapter/MtpAdapter.java @@ -40,6 +40,7 @@ public class MtpAdapter extends BaseAdapter implements SectionIndexer { private MtpDeviceIndex mModel; private SortOrder mSortOrder = SortOrder.Descending; private LayoutInflater mInflater; + private int mGeneration = 0; public MtpAdapter(Activity context) { super(); @@ -53,6 +54,18 @@ public class MtpAdapter extends BaseAdapter implements SectionIndexer { notifyDataSetChanged(); } + @Override + public void notifyDataSetChanged() { + mGeneration++; + super.notifyDataSetChanged(); + } + + @Override + public void notifyDataSetInvalidated() { + mGeneration++; + super.notifyDataSetInvalidated(); + } + public boolean deviceConnected() { return (mModel != null) && (mModel.getDevice() != null); } @@ -121,7 +134,7 @@ public class MtpAdapter extends BaseAdapter implements SectionIndexer { } else { imageView = (MtpThumbnailTileView) convertView; } - imageView.setMtpDeviceAndObjectInfo(mModel.getDevice(), (MtpObjectInfo)getItem(position)); + imageView.setMtpDeviceAndObjectInfo(mModel.getDevice(), (MtpObjectInfo)getItem(position), mGeneration); return imageView; } else { DateTileView dateTile; diff --git a/src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java b/src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java index ddba6af91..2aeda73db 100644 --- a/src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java +++ b/src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java @@ -35,6 +35,8 @@ public class MtpThumbnailTileView extends ImageView implements Checkable { private Paint mForegroundPaint; private boolean mIsChecked; + private int mObjectHandle; + private int mGeneration; private void init() { mForegroundPaint = new Paint(); @@ -92,13 +94,19 @@ public class MtpThumbnailTileView extends ImageView implements Checkable { private LoadThumbnailTask mTask; - public void setMtpDeviceAndObjectInfo(MtpDevice device, MtpObjectInfo object) { + public void setMtpDeviceAndObjectInfo(MtpDevice device, MtpObjectInfo object, int gen) { + int handle = object.getObjectHandle(); + if (handle == mObjectHandle && gen == mGeneration) { + return; + } animate().cancel(); if (mTask != null) { mTask.cancel(true); } + mGeneration = gen; + mObjectHandle = handle; Bitmap thumbnail = MtpBitmapCache.getInstanceForDevice(device) - .get(object.getObjectHandle()); + .get(handle); if (thumbnail != null) { setAlpha(1f); setImageBitmap(thumbnail); -- cgit v1.2.3