Skip to content

Instantly share code, notes, and snippets.

@kibotu
Last active April 30, 2018 21:00
Show Gist options
  • Save kibotu/30688a3d09cad0ecbb932c05b79fa482 to your computer and use it in GitHub Desktop.
Save kibotu/30688a3d09cad0ecbb932c05b79fa482 to your computer and use it in GitHub Desktop.
RealmListParcelConverter
open class RealmListParcelConverter<T> : TypeRangeParcelConverter<RealmList<T>, RealmList<T>> where T : RealmObject {
override fun toParcel(input: RealmList<T>?, parcel: Parcel) {
if (input == null) {
parcel.writeInt(NULL)
} else {
parcel.writeInt(input.size)
for (item in input) {
parcel.writeParcelable(Parcels.wrap(item), 0)
}
}
}
override fun fromParcel(parcel: Parcel): RealmList<T> {
val size = parcel.readInt()
val list = RealmList<T>()
for (i in 0 until size) {
val parcelable = parcel.readParcelable<Parcelable>(javaClass.classLoader)
list.add(Parcels.unwrap<T>(parcelable))
}
return list
}
companion object {
private const val NULL = -1
}
}
@kibotu
Copy link
Author

kibotu commented Feb 2, 2018

@Parcel(implementations = [(RealmModelRealmProxy::class)],
        value = Parcel.Serialization.BEAN,
        analyze = [(RealmModel::class)])
open class RealmModel(
        @set:ParcelPropertyConverter(RealmListParcelConverter::class)
        var list: RealmList<RealmItem>? = null
) : RealmObject()
@Parcel(implementations = [(RealmItemRealmProxy::class)],
        value = Parcel.Serialization.BEAN,
        analyze = [(RealmItem::class)])
open class RealmItem : RealmObject()

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