Spinnerをkotlinで試してみます!その2
どうも!LSSです!
昨日のSpinnerをkotlinで試してみます!その1では、Spinnerを画面上に置いて、Spinnerとして選択肢を開いたりできるところまでやりました。
今回「その2」では、イベントリスナーを設定して選択した結果を反映させるまで、をやりたいと思います!
ちなみに今回書くのはこんなコード!
sp0.onItemSelectedListener=object :AdapterView.OnItemSelectedListener { |
早速、書いていきます!
書く場所も前回の続きから、
↑このへんに書いていきますね。
最初に書くのは
sp0.setOnItemSelectedListener=object :AdapterView.OnItemSelectedListener{
}
です。
イベントリスナーって、どうしてこう、同じ単語が繰り返し出てくるんでしょうね^^;。
2つのoverrideを挟んでいきます!
次に、今書いたうちの{と}の間の行に書いていきます!
over
まで打ったところで、
補完候補が出てきたので、ここは、
override fun onItemSelected(p0:…
って方を選択しておきます。
すると、
TODO行が出てくるので、これはばっさり削除しておきます。
そして、TODO行があったところに更に書いていきます!
val spp=p0 as Spinner
t0.text=spp.selectedItem.toString()
一行目のSpinner、Sを大文字にしなくちゃな点が要注意ですね。
そして、もひとつoverrideを書かなきゃいけないようです。
さっきのoverrideの}のあと、にあたる行ですね。
ここもまた、
over
まで打つと、
補完候補が現れます。
ここは、
override fun onNothingSelected(p0:…
というやつを選択しておきます。
すると、
こうなります。
例によって、TODO行はばっさり削除します。
今度は中は何も書かなくてOKです。
実は、これで完成です!!
あとはちょっと余分な空き行とかを整理して、完成したコードは、
package jp.littlestrangesoftware.a20191014spinnertest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Spinner
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
sp0.onItemSelectedListener=object :AdapterView.OnItemSelectedListener {
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
val spp=p0 as Spinner
t0.text=spp.selectedItem.toString()
}
override fun onNothingSelected(p0: AdapterView<*>?) {
}
}
}
}
こうなります!
ビルドしてみましょう
起動時、いきなりTextViewまで「a」 になってますね。
「スピナーでアイテムが選択された時」のイベントは最初の起動時にも発生する、という事でしょうか。
ここで、▼を押して、
違う候補…例えば「c」を選択すると、
TextViewの値が、スピナーで選択した内容に書き換えられました!
あとがき
これで一応、普通にスピナーを利用するのに最低限必要な
- スピナーをコードから作成する
- スピナーでの選択がされた時点で、選択内容に応じた処理を行う
の2つを実践しました^^
ですが、今回この記事を書くにあたって調べてみると、例えば
「スピナーの選択肢が開かれた状態での見た目(今回はデフォルトで用意されているものを利用していますが)」これをxmlで自作して、それを表示するとかいったような事もできるようで、まだまだ奥が深そうに思えました。
今回は「とりあえず」で割り切っちゃいますけどねw
いずれ「その3」とか「その4」とかって書く日が来るのかも?です。
あと、あまり関係ないのですが、amazonでまた「スピナー」で検索かけてると
こういった商品がヒットしました。
「手回し洗濯機」!?
災害時の停電の時とかに役に立ったりするのかなぁ
あるいは家の洗濯機には入れたくないものを洗う時用に?
というところで、今回の記事はここまで!
また次回、よろしくお願いしまーす!