お首が長いのよお首が長いのよ

チラシの裏よりお届けするソフトウェアエンジニアとして成長したい人のためのブログ

2019-01-15

【Android App with Kotlin #3】ListViewを使う

まずはListViewに適当なデータを表示させるシンプルなものを用意しました。

作るもの

ListviewActivity.kt内で宣言したString型のコレクションを表示させるListViewです。

環境

このコードは以下の環境で書いています。

  • macOS 10.14.2(Mojave)
  • Android Studio 3.2.1
  • Android SDK 28
  • gradle 4.6

事前準備

特にありません。 表示させるアイテムのネタを考えておきましょう。

レイアウトファイル

デザインタブから「ListView」を挿入します。 PaletteのLegacyに入っているので注意しましょう。

テキストタブでレイアウトやコードの微修正します。

Java
1<?xml version="1.0" encoding="utf-8"?>
2<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3                                             xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
4                                             android:layout_height="match_parent">
5
6    <ListView
7            android:id="@+id/lvHeroes"
8            android:layout_width="368dp"
9            android:layout_height="495dp"
10            android:layout_marginTop="8dp"
11            android:layout_marginBottom="8dp"
12            android:layout_marginStart="8dp"
13            android:layout_marginEnd="8dp"
14            app:layout_constraintTop_toTopOf="parent"
15            app:layout_constraintBottom_toBottomOf="parent"
16            app:layout_constraintStart_toStartOf="parent"
17            app:layout_constraintEnd_toEndOf="parent" />
18</android.support.constraint.ConstraintLayout>
19

Activityファイル

Java
1class ListviewActivity: AppCompatActivity() {
2    override fun onCreate(savedInstanceState: Bundle?){
3        super.onCreate(savedInstanceState)
4        setContentView(R.layout.listview_activity)
5
6        val heroes:Array<String> = arrayOf("Iron Man", "Captain America", "Thor") //[1]
7        val adapter = ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, heroes) //[2]
8        val lvHeroes: ListView = findViewById(R.id.lvHeroes) //[3]
9
10        lvHeroes.adapter = adapter //[4]
11
12    }
13}
14

コードの説明に入ります。

[1]

String型が格納されるコレクション(配列)を宣言すると同時に値を代入しています。

[2]

ListViewというレイアウトと、[1]で宣言したコレクションを紐付けるアダプターです。

  • this コンテキストです。まだ自分もよくわかっていないので調べて加筆します。
  • android.R.layout.simple_list_item_1 はじめから用意されているListViewの項目1つ分のレイアウトです。 独自のレイアウトを適用させる場合は、この引数を変える事になります。
  • heroes [1]で宣言したコレクションの名前で、アダプターにセットしています。

[3]

レイアウトファイルで用意したListViewをActivityファイルで使えるように宣言しています。 Kotlin Andorid extentionsが有効であれば、この項目は書かなくてもレイアウトファイルで 宣言したandroid:idでそのまま扱えます。

[4]

[3]で宣言したListViewと、[2]で宣言したadapterを紐づけています。

リンク

次の記事

次回はListViewで用意したアイテムにタッチすると 処理が実行されるようにします。 【Android App for Kotlin #4】ListViewを使う(2)

前回の記事

【Android App with Kotlin #2】画像を取り扱う(ImageView/ImageButton)

/以上

よかったらシェアしてください!