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:
- 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? - I tried to find in the documentation what
getItemandgetItemIdshould return but I couldn't find. Can anyone explain when these functions are executed and what exactly should return in my case?