summaryrefslogtreecommitdiffstats
path: root/src/com/android/photos/shims/MediaItemsLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/photos/shims/MediaItemsLoader.java')
-rw-r--r--src/com/android/photos/shims/MediaItemsLoader.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/com/android/photos/shims/MediaItemsLoader.java b/src/com/android/photos/shims/MediaItemsLoader.java
index 886b3c3a1..2907eaf02 100644
--- a/src/com/android/photos/shims/MediaItemsLoader.java
+++ b/src/com/android/photos/shims/MediaItemsLoader.java
@@ -22,6 +22,7 @@ import android.database.Cursor;
import android.database.MatrixCursor;
import android.graphics.drawable.Drawable;
import android.provider.MediaStore.Files.FileColumns;
+import android.util.SparseArray;
import com.android.gallery3d.data.ContentListener;
import com.android.gallery3d.data.DataManager;
@@ -33,8 +34,6 @@ import com.android.gallery3d.util.Future;
import com.android.photos.data.PhotoSetLoader;
import com.android.photos.drawables.DrawableFactory;
-import java.util.ArrayList;
-
/**
* Returns all MediaItems in a MediaSet, wrapping them in a cursor to appear
* like a PhotoSetLoader
@@ -47,7 +46,7 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
}
};
- private MediaSet mMediaSet;
+ private final MediaSet mMediaSet;
private Future<Integer> mSyncTask = null;
private ContentListener mObserver = new ContentListener() {
@Override
@@ -55,7 +54,7 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
onContentChanged();
}
};
- private ArrayList<MediaItem> mMediaItems = new ArrayList<MediaItem>();
+ private SparseArray<MediaItem> mMediaItems;
public MediaItemsLoader(Context context) {
super(context);
@@ -104,6 +103,7 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
mMediaSet.loadIfDirty();
final MatrixCursor cursor = new MatrixCursor(PhotoSetLoader.PROJECTION);
final Object[] row = new Object[PhotoSetLoader.PROJECTION.length];
+ final SparseArray<MediaItem> mediaItems = new SparseArray<MediaItem>();
mMediaSet.enumerateTotalMediaItems(new ItemConsumer() {
@Override
public void consume(int index, MediaItem item) {
@@ -122,9 +122,12 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
}
row[PhotoSetLoader.INDEX_MEDIA_TYPE] = mappedMediaType;
cursor.addRow(row);
- mMediaItems.add(item);
+ mediaItems.append(index, item);
}
});
+ synchronized (mMediaSet) {
+ mMediaItems = mediaItems;
+ }
return cursor;
}