Skip to content

Commit

Permalink
Part 8: Make classes Parcelables
Browse files Browse the repository at this point in the history
  • Loading branch information
juanchosaravia committed Apr 29, 2016
1 parent 041903f commit a1091d7
Showing 1 changed file with 53 additions and 2 deletions.
55 changes: 53 additions & 2 deletions app/src/main/java/com/droidcba/kedditbysteps/commons/Models.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,37 @@
package com.droidcba.kedditbysteps.commons

import android.os.Parcel
import android.os.Parcelable
import com.droidcba.kedditbysteps.commons.adapter.AdapterConstants
import com.droidcba.kedditbysteps.commons.adapter.ViewType
import com.droidcba.kedditbysteps.commons.extensions.createParcel

data class RedditNews(
val after: String,
val before: String,
val news: List<RedditNewsItem>)
val news: List<RedditNewsItem>) : Parcelable {

This comment has been minimized.

Copy link
@Harryyan

Harryyan Apr 16, 2018

using @parcelize is better


companion object {
@JvmField @Suppress("unused")
val CREATOR = createParcel { RedditNews(it) }
}

protected constructor(parcelIn: Parcel) : this(
parcelIn.readString(),
parcelIn.readString(),
mutableListOf<RedditNewsItem>().apply {
parcelIn.readTypedList(this, RedditNewsItem.CREATOR)
}
)

override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeString(after)
dest.writeString(before)
dest.writeTypedList(news)
}

override fun describeContents() = 0
}

data class RedditNewsItem(
val author: String,
Expand All @@ -15,6 +40,32 @@ data class RedditNewsItem(
val created: Long,
val thumbnail: String,
val url: String
) : ViewType {
) : ViewType, Parcelable {

companion object {
@JvmField @Suppress("unused")
val CREATOR = createParcel { RedditNewsItem(it) }
}

protected constructor(parcelIn: Parcel) : this(
parcelIn.readString(),
parcelIn.readString(),
parcelIn.readInt(),
parcelIn.readLong(),
parcelIn.readString(),
parcelIn.readString()
)

override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeString(author)
dest.writeString(title)
dest.writeInt(numComments)
dest.writeLong(created)
dest.writeString(thumbnail)
dest.writeString(url)
}

override fun describeContents() = 0

override fun getViewType() = AdapterConstants.NEWS
}

0 comments on commit a1091d7

Please sign in to comment.