From 4797c9d4eb293edb18374cc2b5b13612d2fa8136 Mon Sep 17 00:00:00 2001 From: Tomo Matsumoto Date: Sun, 13 Sep 2015 03:14:31 +0900 Subject: [PATCH] use LinkedHashSet instead of Set to keep image selection order --- .../nl/changer/polypickerdemo/MainActivity.java | 17 ++++------------- .../changer/polypicker/ImagePickerActivity.java | 9 ++++----- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/PolyPickerDemo/app/src/main/java/nl/changer/polypickerdemo/MainActivity.java b/PolyPickerDemo/app/src/main/java/nl/changer/polypickerdemo/MainActivity.java index d06dbbb..bd5d95b 100644 --- a/PolyPickerDemo/app/src/main/java/nl/changer/polypickerdemo/MainActivity.java +++ b/PolyPickerDemo/app/src/main/java/nl/changer/polypickerdemo/MainActivity.java @@ -16,8 +16,6 @@ import android.widget.ImageView; import java.io.File; -import java.util.HashSet; -import java.util.Iterator; import nl.changer.polypicker.Config; import nl.changer.polypicker.ImagePickerActivity; @@ -33,7 +31,7 @@ public class MainActivity extends AppCompatActivity { private Context mContext; private ViewGroup mSelectedImagesContainer; - HashSet mMedia = new HashSet(); + private Uri[] uris; @Override protected void onCreate(Bundle savedInstanceState) { @@ -93,15 +91,10 @@ protected void onActivityResult(int requestCode, int resuleCode, Intent intent) } // Java doesn't allow array casting, this is a little hack - Uri[] uris = new Uri[parcelableUris.length]; + uris = new Uri[parcelableUris.length]; System.arraycopy(parcelableUris, 0, uris, 0, parcelableUris.length); if (uris != null) { - for (Uri uri : uris) { - Log.i(TAG, " uri: " + uri); - mMedia.add(uri); - } - showMedia(); } } @@ -113,14 +106,12 @@ private void showMedia() { // adding the new ones. mSelectedImagesContainer.removeAllViews(); - Iterator iterator = mMedia.iterator(); ImageInternalFetcher imageFetcher = new ImageInternalFetcher(this, 500); - while (iterator.hasNext()) { - Uri uri = iterator.next(); + for (Uri uri : uris) { // showImage(uri); Log.i(TAG, " uri: " + uri); - if (mMedia.size() >= 1) { + if (uris.length >= 1) { mSelectedImagesContainer.setVisibility(View.VISIBLE); } diff --git a/PolyPickerDemo/pp/src/main/java/nl/changer/polypicker/ImagePickerActivity.java b/PolyPickerDemo/pp/src/main/java/nl/changer/polypicker/ImagePickerActivity.java index 62e22f5..1d4a309 100644 --- a/PolyPickerDemo/pp/src/main/java/nl/changer/polypicker/ImagePickerActivity.java +++ b/PolyPickerDemo/pp/src/main/java/nl/changer/polypicker/ImagePickerActivity.java @@ -17,8 +17,7 @@ import android.widget.Toast; import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; +import java.util.LinkedHashSet; import nl.changer.polypicker.model.Image; import nl.changer.polypicker.utils.ImageInternalFetcher; @@ -35,7 +34,7 @@ public class ImagePickerActivity extends AppCompatActivity { */ public static final String EXTRA_IMAGE_URIS = "nl.changer.changer.nl.polypicker.extra.selected_image_uris"; - private Set mSelectedImages; + private LinkedHashSet mSelectedImages; private LinearLayout mSelectedImagesContainer; protected TextView mSelectedImageEmptyMessage; @@ -81,7 +80,7 @@ protected void onCreate(Bundle savedInstanceState) { mCancelButtonView = (Button) findViewById(R.id.pp__btn_cancel); mDoneButtonView = (Button) findViewById(R.id.pp__btn_done); - mSelectedImages = new HashSet(); + mSelectedImages = new LinkedHashSet(); mImageFetcher = new ImageInternalFetcher(this, 500); mCancelButtonView.setOnClickListener(mOnFinishGettingImages); @@ -122,7 +121,7 @@ public boolean addImage(Image image) { // this condition may arise when the activity is being // restored when sufficient memory is available. onRestoreState() // will be called. - mSelectedImages = new HashSet(); + mSelectedImages = new LinkedHashSet(); } if (mSelectedImages.size() == mConfig.getSelectionLimit()) {