Spinnerをkotlinで試してみます!その1
どうも!LSSです!
今回はSpinnerを試してみたいと思います。
Webにも、ExcelやAccessといったOffice製品にも、同種の機能は違う名前でありますが、AndroidのはSpinnerっていうんですね。
なお、今回書くコードを先に貼っておくと、
package jp.littlestrangesoftware.a20191014spinnertest |
↑こういうものを書こうとしています。
アプリ新規作成から始めます
新規作成でアプリ名とか設定し終わったあとのお馴染みの画面ですね。
今回もまず、activity_main.xmlのほうから編集していきます。
で、やっぱりデフォルトのConstraintLayoutが気に入らないので、右クリックし、出てきたメニューから「Convert view」をクリックします。
出てくるダイアログからは、「LinearLayout」をクリックしてApply。
そして、LinearLayoutに変わったものを更に右クリックして、「LinearLayout」→「Convert orientation to vertical」を選択します。
そのLinearLayoutが選択された状態のまま、画面右のAttributesの
「gravity」の項目のところにある旗マークをクリックします。
出てくる選択肢のうち「center」をクリックします。
※勝手にあと2つの「center~」にもチェックが入ります。
で、Apply。
今度は、「Pallete」の中から「Containers」をクリックします。
そして「Spinner」をマウスドラッグで、下の「Component Tree」内、「TextView」の下あたりにドロップします。
さて、また、設置されたスピナーが選択された状態のまま、画面右の「Attributes」の
「id」の項目だけを「sp0」と打ち換えておきます。
あと、一応、なんですが、
「spinnerMode」ってところ、薄い字で「dropdown」 と表示されているので、横の▼を押して、
「dropdown」を選択しておきます。
あと、「TextView」も選択して、
画面右「Attributes」から
「id」…「t0」に打ち換えます。
「layout_width」…「match_parent」に変更します。
「textSize」…「30sp」に変更します。
以上で、xmlの編集は完了です!
ここからが本題!
「MainActivity.kt」の編集に移ります。
まずは、Spinnerで選択する候補となる、文字列を配列で用意します!
class MainActivity : AppCompatActivity() {
の次の行あたりに、
var list0=listOf("a","b","c")
と入力します。
※list0は任意の名前。"a","b","c"は文字列ならなんでもOKです。
↑こういう感じですね。
そして今度は、onCreate()内、
setContentView(R.layout.activity_main)
の次の行あたりに、
val adpt0=ArrayAdapter(applicationContext,android.R.layout.simple_spinner_item,list0)
と入力します。
途中、補完機能も働きますが、
android.R.layout.simple_spinner_item
の部分はよく似た候補が複数あるので要注意です。
さらに続けて、
adpt0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
と入力します。
こちらも補完ではよく似た候補が出てきます。
次に、
sp0.adapter=adpt0
と入力します。その際、
sp0まで入力した時点で、
こんな候補が出てくるので、選択しておくと、画面パーツがimportされます。
※選択せずに続けて一行打った場合、打ち終えたあとのsp0に赤い波線がつくことになりますが、その場合はそこでキーボードの「ALTキー+Enterキー」を押すことでもimportできます。
これで、
「adpt0というArrayAdapterを用意して、sp0というスピナーにセットする」
というところまで出来ました!
ここでいったん、試しにビルド!
ここで試しにビルドしてみます。
「a」という字が出てきていますね^^
その右のほうにある▼をクリックすると、
↑のように、ちゃんとスピナーとしての選択肢が開きます!
…というところで、今回はここまでにしておきます。
次回は、イベントリスナーを実装して、スピナーをちゃんと使えるスピナーに育てたいと思いますw
ではまた!次回もよろしくお願いします!
余談
記事内容と関係ないっちゃないんですが、今「スピナー」って聞くとまっさきに連想するのは
↑これですねw