課題
プルダウンメニューを使いたいが
未選択時にはスピナーの項目名が表示されているようににしたい。
対策
Spinnerにはタイトルラベルのような概念はないので普通に使うとリストの1件目が表示される。
なので、タイトルっぽいテキストをおいて差し替えるか、リストの1件目をタイトルテキストにして
ドロップダウン時には表示を工夫するなどが必要になる。今回の対策は前者。
- TextViewを用意し、SpinnerをInvisibleにする
- TextViewのOnClickListnerでSpinner.performClick()を実行
- Spinner.onItemSelectedListenerの選択された内容に応じてTextViewと表示を切り替え
//TextView holder.spinnerTitle.setOnClickListener { holder.spinner.performClick() } //Spinner holder.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { if (position == 0) { holder.spinner.visibility = View.INVISIBLE holder.spinnerTitle.visibility = View.VISIBLE } else { holder.spinner.visibility = View.VISIBLE holder.spinnerTitle.visibility = View.GONE } } } }
SpinnerはView.GONEにしてしまうとonItemSelectedイベントが発動しないので注意