android kotlin - Enum example

MainActivity.kt

package com.cfsuman.kotlintutorials

import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // get the widgets reference from XML layout
        val textView = findViewById<TextView>(R.id.textView)
        val btnBasicEnum = findViewById<Button>(R.id.btnBasicEnum)
        val btnEnumValues = findViewById<Button>(R.id.btnEnumValues)
        val btnMultiValues = findViewById<Button>(R.id.btnMultiValues)


        // make textview content scrollable
        textView.movementMethod = ScrollingMovementMethod()


        // Basic enum class
        btnBasicEnum.setOnClickListener{
            val builder = StringBuilder()
            builder.append("Basic usage of enum class")
            builder.append("\n\nPosition.Top = ${Position.Top}")
            builder.append("\nPosition.Right = ${Position.Right}")
            builder.append("\nPosition.Bottom = ${Position.Bottom}")
            builder.append("\nPosition.Left = ${Position.Left}")
            textView.text = builder.toString()
        }


        // Enum with values
        btnEnumValues.setOnClickListener{
            val builder = StringBuilder()
            builder.append("Enum with values")
            builder.append("\n\nBangladesh = ${
                Capital.Bangladesh.capital}")
            builder.append("\nIndia = ${Capital.India.capital}")
            builder.append("\nSweden = ${Capital.Sweden.capital}")
            builder.append("\nAustralia = ${
                Capital.Australia.capital}")
            builder.append("\nQatar = ${Capital.Qatar.capital}")
            textView.text = builder.toString()
        }


        // Enum with multiple values
        btnMultiValues.setOnClickListener{
            val builder = StringBuilder()
            builder.append("Enum with multiple values")
            builder.append("\n\nAustria = ${Country.Austria.capital} " +
                    ": ${Country.Austria.currency}")
            builder.append("\nChina = ${Country.China.capital} " +
                    ": ${Country.China.currency}")
            builder.append("\nEgypt = ${Country.Egypt.capital} " +
                    ": ${Country.Egypt.currency}")
            builder.append("\nFrance = ${Country.France.capital} " +
                    ": ${Country.France.currency}")
            textView.text = builder.toString()
        }
    }
}



// Basic enum class
enum class Position{
    Top, Right, Bottom, Left
}


// Enum with values
enum class Capital(val capital:String){
    Bangladesh("Dhaka"),
    India("New Delhi"),
    Sweden("Stockholm"),
    Australia("Canberra"),
    Qatar("Doha")
}


// Enum with multiple values
enum class Country(val capital:String, val currency:String){
    Austria("Vienna","Euro"),
    China("Beijing","Chinese Yuan"),
    Egypt("Cairo","Egyptian Pound"),
    France("Paris","Euro; CFP Franc")
}
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F8F8F8"
    android:padding="8dp">

    <Button
        android:id="@+id/btnBasicEnum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Basic Enum"
        android:textAllCaps="false"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btnEnumValues"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:text="Enum Values"
        android:textAllCaps="false"
        app:layout_constraintBottom_toBottomOf="@+id/btnBasicEnum"
        app:layout_constraintStart_toEndOf="@+id/btnBasicEnum" />

    <Button
        android:id="@+id/btnMultiValues"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:text="Multi Values"
        android:textAllCaps="false"
        app:layout_constraintBottom_toBottomOf="@+id/btnEnumValues"
        app:layout_constraintStart_toEndOf="@+id/btnEnumValues" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="16dp"
        android:fontFamily="sans-serif"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnBasicEnum" />

</androidx.constraintlayout.widget.ConstraintLayout>
More android examples