package org.sufficientlysecure.keychain.util; import java.util.HashMap; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; import org.sufficientlysecure.keychain.KeychainApplication; public class ParcelableHashMap implements Parcelable { HashMap mInner; public ParcelableHashMap(HashMap inner) { mInner = inner; } protected ParcelableHashMap(@NonNull Parcel in) { mInner = new HashMap<>(); ClassLoader loader = KeychainApplication.class.getClassLoader(); int num = in.readInt(); while (num-- > 0) { K key = in.readParcelable(loader); V val = in.readParcelable(loader); mInner.put(key, val); } } public HashMap getMap() { return mInner; } @Override public void writeToParcel(Parcel parcel, int flags) { parcel.writeInt(mInner.size()); for (HashMap.Entry entry : mInner.entrySet()) { parcel.writeParcelable(entry.getKey(), 0); parcel.writeParcelable(entry.getValue(), 0); } } public static final Creator CREATOR = new Creator() { @Override public ParcelableHashMap createFromParcel(Parcel in) { return new ParcelableHashMap(in); } @Override public ParcelableHashMap[] newArray(int size) { return new ParcelableHashMap[size]; } }; @Override public int describeContents() { return 0; } }