[Kotlin]扱いやすいenum


TODO

  • シンプルで扱いやすいenumを作る

実装

enum class

RecyclerType.kt
enum class RecyclerType constructor(val int: Int) {
  BODY(1),
  HEADER(2)
  FOOTER(3);

  companion object {
    // enumへの変換を行う
    fun fromInt(index: Int): RecyclerType {
      return values().firstOrNull { it.int == index } ?: BODY
    }
  }

  val isBody: Boolean
  get() = this == BODY

  val isFooter: Boolean
  get() = this == FOOTER
}

呼び出し

RecyclerAdapter.kt
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
  if(RecyclerType.fromInt(getItemViewType(position)).isBody){
    // 処理
  }
}

おまけ

enumで指定した値以外が来ないという場合は
first {} としても良い。

想定外の値が来た場合はexceptionで落ちる。

RecyclerType.kt
    fun fromInt(index: Int): RecyclerType {
      return values().first { it.int == index } 
    }