Kotlinで、NumberPickerにイベントリスナーを実装!!
どうも!LSSです!!
Kotlinで、Andoidアプリ開発を勉強中です!
今回、ちょっと苦戦しつつも乗り越えた話!!
以前、↑の記事をあげてましたが、この時はイベントリスナー(NumberPickerをユーザーが触って数値を変更した時のイベント)まで踏み込まなかったんですね。
↑の記事の時は それでも使える機能として実装できたので良しとしていたんですが、
- やっぱNumberPickerを触ったら、タイマーの表示がリアルタイムに変わるほうがいいよな
- ちょっとAndoidアプリネタが途切れてたから、次のネタはそれでいくか!
という理由から、まず作ってみる事にしたんですね。
そしたら…
意外とKotlinでNumberPickerのイベントリスナーについて書かれてる情報がない!
Androidアプリ開発は長らくJAVAの独壇場で、Kotlinメインでいくよ!ってなったのが比較的最近なため、JAVAの解説は多々見つかるものの、KotlinでNumberPickerのイベントリスナーの書き方を見つける事ができませんでした^^;
(探しようが悪い、という可能性は多々残っていますw)
色々検索してて、恐ろしい事にこのブログが検索上位にでちゃったりする事もあったりでしたが…なんとかイベントリスナーをつけられたので、ここに記します!!
今回のキモ!
onCreate内に、以下のように書きます。
n0.setOnValueChangedListener(object : NumberPicker.OnValueChangeListener{
override fun onValueChange(p0: NumberPicker?, p1: Int, p2: Int) {
tvCntDredraw()
}
})
…肝、というか、そのまんまですが…
n0
は、NumberPickerにつけた任意のid(好きに変えちゃってOK!な部分)、
tvCntDredraw()
は、別途用意したfunにつけた任意の名前です。
JAVAについて書かれた情報と、以前書いたSeekBarのイベントリスナーの書き方を参照して正解にたどり着きました!
p1に変更前の値、p2に変更後の値が入ると思われます(JAVA版情報)
今回の例では別に処理してるので、その引数は無視してますけど^^;
JAVAの情報は多いけど…
Kotlinが新参(JAVAに比べれば)なのと、NumberPickerが日陰の存在?なのとが重なると、ズバリな答えがネットで見つからない事があるんだなぁ、と思いました^^;
もひとつ、今回気づいたのは、はてなブックマークで「Kotlin」を検索すると、案外このブログ記事が数件まざってる事…なんか恐縮してしまうw
んでも、これからも気づいた事は発信していく事で、同じくKotlinを触りはじめた人の役に立つ日が来るかも知れない!!っていうのと、ネットで正解を見つけられなかった問題を、組み合わせで解決できた事がちょっと自分の自信になったかも!!
では、今回はこのへんで!
次回もまた、よろしくお願いします!!