From 270f2310c7ffbfc63791526f9e52a3e0fb2d73ca Mon Sep 17 00:00:00 2001 From: Qandeel Abbassi Date: Fri, 21 Sep 2018 18:50:24 +0500 Subject: [PATCH] wrapped excluded images list in to singleton to avoid exceeding parcel size limit --- .../features/ImagePickerConfig.java | 31 +++++------- .../helper/ExcludedMediaSingleton.java | 50 +++++++++++++++++++ 2 files changed, 62 insertions(+), 19 deletions(-) create mode 100644 imagepicker/src/main/java/com/esafirm/imagepicker/helper/ExcludedMediaSingleton.java diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerConfig.java b/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerConfig.java index f6a128b1..3039e1a8 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerConfig.java +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerConfig.java @@ -6,6 +6,7 @@ import com.esafirm.imagepicker.features.common.BaseConfig; import com.esafirm.imagepicker.features.imageloader.ImageLoader; +import com.esafirm.imagepicker.helper.ExcludedMediaSingleton; import com.esafirm.imagepicker.model.Image; import java.io.File; @@ -16,7 +17,7 @@ public class ImagePickerConfig extends BaseConfig implements Parcelable { static final int NO_COLOR = -1; private ArrayList selectedImages; - private ArrayList excludedImages; + private String folderTitle; private String imageTitle; @@ -36,6 +37,7 @@ public class ImagePickerConfig extends BaseConfig implements Parcelable { private transient String language; public ImagePickerConfig() { + ExcludedMediaSingleton.getInstance().resetExclusions(); } public int getArrowColor() { @@ -111,22 +113,15 @@ public void setSelectedImages(ArrayList selectedImages) { } public ArrayList getExcludedImages() { - return excludedImages; + return ExcludedMediaSingleton.getInstance().getExcludedImages(); } public void setExcludedImages(ArrayList excludedImages) { - if (excludedImages != null && !excludedImages.isEmpty()) { - this.excludedImages = new ArrayList<>(); - for (Image image : excludedImages) { - this.excludedImages.add(new File(image.getPath())); - } - } else { - this.excludedImages = null; - } + ExcludedMediaSingleton.getInstance().setExcludedImages(excludedImages); } public void setExcludedImageFiles(ArrayList excludedImages) { - this.excludedImages = excludedImages; + ExcludedMediaSingleton.getInstance().setExcludedImageFiles(excludedImages); } public boolean isFolderMode() { @@ -175,10 +170,8 @@ public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedList(this.selectedImages); - dest.writeByte((byte) (excludedImages != null ? 1 : 0)); - if (excludedImages != null) { - dest.writeList(this.excludedImages); - } + dest.writeByte((byte) ((ExcludedMediaSingleton.getInstance().getExcludedImages() == null || + ExcludedMediaSingleton.getInstance().getExcludedImages().size() == 0)? 0 : 1)); dest.writeString(this.folderTitle); dest.writeString(this.imageTitle); @@ -198,10 +191,10 @@ protected ImagePickerConfig(Parcel in) { this.selectedImages = in.createTypedArrayList(Image.CREATOR); boolean isPresent = in.readByte() != 0; - if (isPresent) { - this.excludedImages = new ArrayList<>(); - in.readList(this.excludedImages, File.class.getClassLoader()); - } +// if (isPresent) { +// this.excludedImages = new ArrayList<>(); +// in.readList(this.excludedImages, File.class.getClassLoader()); +// } this.folderTitle = in.readString(); this.imageTitle = in.readString(); diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/helper/ExcludedMediaSingleton.java b/imagepicker/src/main/java/com/esafirm/imagepicker/helper/ExcludedMediaSingleton.java new file mode 100644 index 00000000..adb6c019 --- /dev/null +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/helper/ExcludedMediaSingleton.java @@ -0,0 +1,50 @@ +package com.esafirm.imagepicker.helper; + +import com.esafirm.imagepicker.model.Image; + +import java.io.File; +import java.util.ArrayList; + +/** + * Code written by Qandeel Abbassi on 9/20/2018 at 7:03 PM. + */ +public class ExcludedMediaSingleton { + private static ExcludedMediaSingleton ourInstance; + private ArrayList excludedImages; + + private ExcludedMediaSingleton() { + } + + public static ExcludedMediaSingleton getInstance() { + if (ourInstance == null) { //if there is no instance available... create new one + ourInstance = new ExcludedMediaSingleton(); + } + return ourInstance; + } + + public void resetExclusions() { + if (excludedImages != null) { + excludedImages.clear(); + } + excludedImages = null; + } + + public void setExcludedImages(ArrayList excludedImages) { + if (excludedImages != null && !excludedImages.isEmpty()) { + this.excludedImages = new ArrayList<>(); + for (Image image : excludedImages) { + this.excludedImages.add(new File(image.getPath())); + } + } else { + this.excludedImages = null; + } + } + + public void setExcludedImageFiles(ArrayList excludedImages) { + this.excludedImages = excludedImages; + } + + public ArrayList getExcludedImages() { + return excludedImages; + } +}