private MtpDeviceIndex mModel;
private SortOrder mSortOrder = SortOrder.Descending;
private LayoutInflater mInflater;
+ private int mGeneration = 0;
public MtpAdapter(Activity context) {
super();
notifyDataSetChanged();
}
+ @Override
+ public void notifyDataSetChanged() {
+ mGeneration++;
+ super.notifyDataSetChanged();
+ }
+
+ @Override
+ public void notifyDataSetInvalidated() {
+ mGeneration++;
+ super.notifyDataSetInvalidated();
+ }
+
public boolean deviceConnected() {
return (mModel != null) && (mModel.getDevice() != null);
}
} else {
imageView = (MtpThumbnailTileView) convertView;
}
- imageView.setMtpDeviceAndObjectInfo(mModel.getDevice(), (MtpObjectInfo)getItem(position));
+ imageView.setMtpDeviceAndObjectInfo(mModel.getDevice(), (MtpObjectInfo)getItem(position), mGeneration);
return imageView;
} else {
DateTileView dateTile;
private Paint mForegroundPaint;
private boolean mIsChecked;
+ private int mObjectHandle;
+ private int mGeneration;
private void init() {
mForegroundPaint = new Paint();
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);