Carlos Ottoboni
10/01/2018, 8:16 PMEntity
with a Enum
class as a property. It's something like this:
@Entity(tableName = "tb_episode")
data class Episode (
var title: String,
var episodeType: EpisodeType
...
)
And I have the TypeConverter
for it:
object Converters {
@TypeConverter
@JvmStatic
fun toEnum(code: Int): EpisodeType {
return when (code) {
1 -> EpisodeType.PODCAST
2 -> EpisodeType.ALBUM_REVIEW
else -> EpisodeType.DEFAULT
}
}
@TypeConverter
@JvmStatic
fun fromEnum(type: EpisodeType): Int {
return when (type) {
EpisodeType.PODCAST -> 1
EpisodeType.ALBUM_REVIEW -> 2
else -> 0
}
}
}
Also, I added the TypeConverters
Annotation to my Database class:
@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase()
But when I try to run the App I get this message:
Class is referenced as a converter but it does not have any converter methods.
I don't know if Room doesn't support Kotlin Enum
class or if I'm doing something wrong.
Anyone can help me with this?moj
10/02/2018, 7:26 AMobject
, make it an ordinary class and see if you get a different error message.Carlos Ottoboni
10/02/2018, 2:20 PMCarlos Ottoboni
10/02/2018, 2:21 PMclass EpisodeTypeConverter {
@TypeConverter
fun toEpisodeType(value: Int): EpisodeType {
return EpisodeType.values()[value]
}
@TypeConverter
fun fromEpisodeType(value: EpisodeType): Int {
return value.let { value.ordinal }
}
}
Carlos Ottoboni
10/02/2018, 2:21 PM@Entity(tableName = "tb_episode")
@TypeConverters(EpisodeTypeConverter::class)
data class Episode(
...
@ColumnInfo(name = "episode_type")
var episodeType: EpisodeType = EpisodeType.DEFAULT
)