Skip to content

Instantly share code, notes, and snippets.

@bulwinkel
Created January 7, 2017 13:35
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bulwinkel/60f2d06314c0d43225204c00251f1f48 to your computer and use it in GitHub Desktop.
Save bulwinkel/60f2d06314c0d43225204c00251f1f48 to your computer and use it in GitHub Desktop.
Partial implementation of converting a `Map<String, V>` to a Bundle.
package com.bulwinkel.android
import android.os.Bundle
import android.os.IBinder
import android.os.Parcelable
import java.io.Serializable
fun <V> Map<String, V>.toBundle(bundle: Bundle = Bundle()): Bundle = bundle.apply {
forEach {
val k = it.key
val v = it.value
when (v) {
is IBinder -> putBinder(k, v)
is Bundle -> putBundle(k, v)
is Byte -> putByte(k, v)
is ByteArray -> putByteArray(k, v)
is Char -> putChar(k, v)
is CharArray -> putCharArray(k, v)
is CharSequence -> putCharSequence(k, v)
is Float -> putFloat(k, v)
is FloatArray -> putFloatArray(k, v)
is Parcelable -> putParcelable(k, v)
is Serializable -> putSerializable(k, v)
is Short -> putShort(k, v)
is ShortArray -> putShortArray(k, v)
// is Size -> putSize(k, v) //api 21
// is SizeF -> putSizeF(k, v) //api 21
else -> throw IllegalArgumentException("$v is of a type that is not currently supported")
// is Array<*> -> TODO()
// is List<*> -> TODO()
}
}
}
@PankajS24
Copy link

Where is java variant of it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment