diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-06-19 18:53:17 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-06-19 18:53:17 +0200 |
commit | d1ceb73eb0e995dcddbfe4bbafa0cf4b5d1371f0 (patch) | |
tree | e26c02d2e5c1ccc9cc1bada48d9cc7db651613ec /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableHashMap.java | |
parent | 5e5febaee38836d546d3cc5b9ce0003f206d4aa5 (diff) | |
download | open-keychain-d1ceb73eb0e995dcddbfe4bbafa0cf4b5d1371f0.tar.gz open-keychain-d1ceb73eb0e995dcddbfe4bbafa0cf4b5d1371f0.tar.bz2 open-keychain-d1ceb73eb0e995dcddbfe4bbafa0cf4b5d1371f0.zip |
save instance state in DecryptListFragment
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableHashMap.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableHashMap.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableHashMap.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableHashMap.java new file mode 100644 index 000000000..fa4081acc --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableHashMap.java @@ -0,0 +1,63 @@ +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 <K extends Parcelable, V extends Parcelable> implements Parcelable { + + HashMap<K,V> mInner; + + public ParcelableHashMap(HashMap<K,V> 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<K,V> getMap() { + return mInner; + } + + @Override + public void writeToParcel(Parcel parcel, int flags) { + parcel.writeInt(mInner.size()); + for (HashMap.Entry<K,V> entry : mInner.entrySet()) { + parcel.writeParcelable(entry.getKey(), 0); + parcel.writeParcelable(entry.getValue(), 0); + } + } + + public static final Creator<ParcelableHashMap> CREATOR = new Creator<ParcelableHashMap>() { + @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; + } + +} |