Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

Spinnerをkotlinで試してみます!その1

 どうも!LSSです!

 

 今回はSpinnerを試してみたいと思います。
 Webにも、ExcelAccessといったOffice製品にも、同種の機能は違う名前でありますが、AndroidのはSpinnerっていうんですね。

 なお、今回書くコードを先に貼っておくと、

package jp.littlestrangesoftware.a20191014spinnertest

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
var list0=listOf("a","b","c")

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

val adpt0=ArrayAdapter(applicationContext,android.R.layout.simple_spinner_item,list0)
adpt0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
sp0.adapter=adpt0

}
}

 ↑こういうものを書こうとしています。

 

 

 

 

アプリ新規作成から始めます

f:id:little_strange:20191014175958p:plain

 新規作成でアプリ名とか設定し終わったあとのお馴染みの画面ですね。

 今回もまず、activity_main.xmlのほうから編集していきます。

 

f:id:little_strange:20191014180446p:plain

で、やっぱりデフォルトのConstraintLayoutが気に入らないので、右クリックし、出てきたメニューから「Convert view」をクリックします。

 

 

f:id:little_strange:20191014180654p:plain

 出てくるダイアログからは、「LinearLayout」をクリックしてApply

 

 

f:id:little_strange:20191014180848p:plain

 そして、LinearLayoutに変わったものを更に右クリックして、「LinearLayout」→「Convert orientation to vertical」を選択します。

 

 そのLinearLayoutが選択された状態のまま、画面右のAttributes

f:id:little_strange:20191014181233p:plain

gravity」の項目のところにある旗マークをクリックします。

 

f:id:little_strange:20191014181446p:plain

出てくる選択肢のうち「center」をクリックします。
※勝手にあと2つの「center~」にもチェックが入ります。

で、Apply

 

 

f:id:little_strange:20191014181805p:plain

 今度は、「Pallete」の中から「Containers」をクリックします。

 そして「Spinner」をマウスドラッグで、下の「Component Tree」内、「TextView」の下あたりにドロップします。

 

  さて、また、設置されたスピナーが選択された状態のまま、画面右の「Attributes」の

f:id:little_strange:20191014182322p:plain

id」の項目だけを「sp0」と打ち換えておきます。 

  あと、一応、なんですが、

f:id:little_strange:20191014183001p:plain

spinnerMode」ってところ、薄い字で「dropdown」 と表示されているので、横の▼を押して、

f:id:little_strange:20191014183213p:plain

dropdown」を選択しておきます。

 

 

f:id:little_strange:20191014190928p:plain

  あと、「TextView」も選択して、

f:id:little_strange:20191014191147p:plain

画面右「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です。

 

f:id:little_strange:20191014192118p:plain

↑こういう感じですね。

 

 そして今度は、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まで入力した時点で、

f:id:little_strange:20191014195418p:plain

こんな候補が出てくるので、選択しておくと、画面パーツがimportされます。 
※選択せずに続けて一行打った場合、打ち終えたあとのsp0赤い波線がつくことになりますが、その場合はそこでキーボードの「ALTキー+Enterキー」を押すことでもimportできます。 

 

 これで、
「adpt0というArrayAdapterを用意して、sp0というスピナーにセットする」
というところまで出来ました!

 

 

ここでいったん、試しにビルド!

 ここで試しにビルドしてみます。

f:id:little_strange:20191014201345p:plain

a」という字が出てきていますね^^

 その右のほうにある▼をクリックすると、

f:id:little_strange:20191014201527p:plain

↑のように、ちゃんとスピナーとしての選択肢が開きます!

 

 …というところで、今回はここまでにしておきます。

 次回は、イベントリスナーを実装して、スピナーをちゃんと使えるスピナーに育てたいと思いますw

 

 ではまた!次回もよろしくお願いします! 

 

 

 余談

 記事内容と関係ないっちゃないんですが、今「スピナー」って聞くとまっさきに連想するのは 

↑これですねw