Android custom Spinner in Kotlin

Viewed 1306

I have created a simple Spinner in Kotlin which only contains an image so I created a layout new_car_dialog:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/imgCar"
        android:layout_width="@dimen/img_add_car_size"
        android:layout_height="@dimen/img_add_car_size"
        android:contentDescription="@string/car_icon" />

</RelativeLayout>

This is my adapter:

class CarSpinnerAdapter(context: Context) : BaseAdapter()
{
    private var inflater: LayoutInflater = LayoutInflater.from(context)

    override fun getItem(p0: Int): Any
    {
        return CarIcon.cars[p0]
    }

    override fun getItemId(p0: Int): Long
    {
        return p0.toLong()
    }

    override fun getCount(): Int
    {
        return CarIcon.cars.size
    }

    override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View
    {
        return if (p1 == null)
        {
            val view = inflater.inflate(R.layout.spinner_car, p2, false)
            view.imgCar.setImageResource(CarIcon.cars[p0].icon)
            view
        }
        else
        {
            p1.imgCar.setImageResource(CarIcon.cars[p0].icon)
            p1
        }
    }
}

Data class which should be displayed by Spinner:

data class CarIcon(val icon: Int, val name: Int)
{
    companion object
    {
        val cars: Array<CarIcon> = arrayOf(
            CarIcon(R.drawable.car0, R.string.car0),
            CarIcon(R.drawable.car1, R.string.car1),
            CarIcon(R.drawable.car2, R.string.car2),
            CarIcon(R.drawable.car3, R.string.car3),
            CarIcon(R.drawable.car4, R.string.car4),
            CarIcon(R.drawable.car5, R.string.car5),
            CarIcon(R.drawable.car6, R.string.car6)
        )

    }
}

I have 2 questions:

  1. Did I have to create this layout new_car_dialog? Is there any build-in Android layout that I could use or any other way to solve it?
  2. I tried to find in the documentation what getItem and getItemId should return but I couldn't find. Can anyone explain when these functions are executed and what exactly should return in my case?
0 Answers
Related