駆け出しエンジニアぱかぱかの成長記録

引くほど忘れっぽい新卒2年目駆け出しSEぱかぱかの備忘録です。

【Android】リストビュー入門

どうも、ぱかぱかです!

ブログ開設1日目、自己紹介に続き2記事目の投稿となります!
果たしてこのブログ、どれくらい続けられるんでしょうか…

以前もほぼ日記のようなブログをやっていた時期がありましたが

その時は約1年くらいで投稿をやめてしまいました…

今回は技術向上という永遠のテーマがお供なので

もっと続けられるといいな〜😌

サボり始めたら一喝お願いしたいところですね😶

まだ記事数少なく自己紹介成分多めですが、お付き合いください🙇🏻‍♀️

2023年の1月からモバイルアプリ開発のプロジェクトに配属となり

もうすぐ3ヶ月が経とうとしております。

やってみた感想、アプリ開発おもろ?って感じです。


前のプロジェクトではJavaのWebアプリケーション開発案件に半年くらいいましたが

プロジェクト状況が忙しすぎて新人の私が律速段階になることが許されず

コーディングというよりはテストメインの業務をやっておりました。

コードを探ることはあっても書く機会はそこまで多くない…

 

一方で今ではコードをいじってなんぼな案件に入ることができました!

自分でコードを直してそれによってアプリの動きが変わるというのを

毎日この目で見ることができるので、些細な修正でもやりがいを感じます🥹

しかも一般の方が使うようなアプリなので、エンドユーザーをイメージしやすい…

友達もそのアプリ使ってるよ〜!と言ってて嬉しくなりました。

前置きが長くなりましたが

モバイル開発という全く新たな分野に配属されたということで

ひとまず以下の本を買って勉強を進めているというのが今の状況です。

この業界も技術書が多すぎてどれ選べばいいのか困っちゃうのですが

おすすめ本として紹介されてたのでこれを選んでみました。

(リンク貼ってみて気づきましたが、もう第3版が出ているんですね…悲しい…

 私が1月に書店で購入した時は第2版でした…😔
 ちょっと見なかったことにします…)

 

購入してからもう2ヶ月くらい経ったわけなのですが

全17章あるうちまだ第5章までしか進んでません😰

業務後や休日にやろうという気持ちだけはあるのですが

どうしても寝落ちしちゃうんですよね…意思弱い…

そんな自分を律するためにブログ始めたみたいな節もあります。

 

本日は「第5章 リストビューとダイアログ」のうち

リストビューについてメモしておきます。

サンプルとして、自分のお試しで作ろうとしている

「発見した野鳥を記録するアプリ」のキャプチャを載せておきます🐥

 

リストビューって何?

・情報をリスト形式で表示できる。

・データ数が多い場合、スクロールできるようになる。

私が見たらテンション上がりそうな野鳥のListView

リストビューが使われてないアプリって少ないのでは?

ってくらい一般的なビューですね。

私が業務で開発しているアプリにもやっぱり使われています。

 

アダプタオブジェクトでデータを管理

リストに表示したい情報は可変なことがほとんどだと思います。

(見たらテンション上がりそうな野鳥も私の中で変動していくかもしれない…?)

その場合はアクティビティ中でリストデータを生成する方法をとる必要があります。

 

本の手順に倣ってまず、以下のようにデータとして

MainActivityのonCreate()メソッド内にmutableListを作ります。

(コードにベタ打ちしている時点で可変とは言わないと思いますが…)

 

val birdsList = mutableListOf("シマエナガ", "シジュウカラ", "アカゲラ", "カワセミ", "オオルリ", "キビタキ", "マミチャジナイ", "ハクセキレイ", "カケス", "イソヒヨドリ", "ムクドリ", "センダイムシクイ", "ルリビタキ", "ブッポウソウ", "ベニマシコ", "シメ")

あとKotlin初心者なのでMutableListってそもそもなんだ?ってなってしまったのですが

どうやらJavaArrayListと同じと考えて良いみたいですね。

 

このリストとリストビューを紐づけるのがアダプタオブジェクトです。

アダプタオブジェクトには以下のようにいくつか種類があります。

 

◆アダプタオブジェクトの種類

ArrayAdapter

 元データとしてArrayもしくはMutableListを利用

SimpleAdapter

 元データとしてMutableList<MutableMap<String, *>>を利用

SimpleCursorAdapter

 元データとしてCursorオブジェクトを利用

 

今回は野鳥の名前データをMutableListで生成したので、ArrayAdapterを使用します。

SimpleAdapterを使用する例も次章で登場する模様。

ArrayAdapterのインスタンスは以下のように生成します。

 

◆ArrayAdapterのインスタンス生成

以下の3つの引数を足してインスタンスを生成します。

ArrayAdapter(this@MainActivity, android.R.layout.simple_list_item_1, birdsList)

context: Context

 表示させたいアクティビティオブジェクト(コンテキスト)

resource: Int

 リストビューの各行のレイアウトを表すR値

 今回は1行表示なのでandroid.R.layout.simple_list_item1を使用

objects: MutableList<T>

 リストデータそのもの

 

ここで出てくるコンテキストというワードもアプリ開発で初めて出会いました。

調べてみてもなかなか掴みきれていないのですが

アプリに関する様々な要素を紐づけるために渡すもの

というざっくり理解に落ち着きました…

(わかりやすい説明があれば助言をお願いいたします…)

今回はthisで自分自身のインスタンスを指定して

表示させたいアクティビティを紐づけているって感じでしょうか。

今回のように@MainActivityと明確に指定することで

インナークラスでthisを指定したときなどに

意図しないインスタンスを指定するといったことを防げるようですね。

 

最後に生成したアダプタオブジェクトを

ListViewのadapterプロパティにセットしてあげたら

生成したデータを持ったリストビューの完成です。

 

lvBirds.adapter =adapter

ここからリストの項目をタップした時のイベントとして

トーストやダイアログを表示するところまで学習したのですが

長くなりそうなのでまた別の記事にまとめることとします。

 

拙い内容でしたがお付き合いいただきありがとうございました🙇🏻‍♀️