私の著書のAndroid SDKポケットリファレンスでまだ対応できていないKotlin化ですが、業務でも利用される機会が多くなってきているかと思います。
少しでもお役に立てるように、Kotlin化した場合にどのように書いていくのかを紹介していくコーナー。
今回はグリッドビュー (GridView) を紹介します。
グリッドビューもリストビューと同じくレガシー扱いとなりましたので、参考程度にどうぞ。
今回のサンプルコードは以下に公開しています。
グリッドビューの表示
まずはレイアウトの表示からです。
以下のようにレイアウトを定義します。
<GridView android:id="@+id/grid_view" android:layout_width="0dp" android:layout_height="0dp" android:numColumns="2" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
GridView
のタグを利用します。ここでは、画面全体となるように設定を行っています。
そして、android:numColumns
でカラムをいくつに分割するかを指定します。
何も指定しない場合は1列となるため、リストビューのような表示となります。今回は2
を指定してみました。
表示するデータの設定
表示するデータはコード上で設定しましょう。
// グリッドビューに表示するテキスト一覧 val countries = arrayOf("日本", "中国", "イギリス", "アメリカ", "オランダ", "オーストラリア", "スイス", "ドイツ", "メキシコ", "スウェーデン", "アイルランド", "フランス", "イタリア") val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, countries) val gridView: GridView = findViewById(R.id.grid_view) gridView.adapter = adapter
arrayOf()
で文字列のリストを作成し、ArrayAdapter
に渡してアダプターのオブジェクトを生成します。
そして、グリッドビューにバインディングするという流れです。
アダプターのレイアウトは1列で文字列が表示されれば良いので、android.R.layout.simple_list_item_1
というOS側で定義されているレイアウトを利用しています。
クリック時の処理を実装する
最後にクリック時の処理も実装しましょう。
gridView.setOnItemClickListener { adapterView, _, position, _ -> Toast.makeText(this, "${adapterView.getItemAtPosition(position)} が選択されました", Toast.LENGTH_SHORT).show() }
グリッドビューのクリックをコールバックで受け取るには、setOnItemClickListener
の実装が必要です。
ラムダ式を用いて実装を行いましょう。
ここでは、getItemAtPosition()
を用いてクリックされた位置のアイテムを取得し、その文字列をString Templeteを使って”xxxxx が選択されました”という形式でトースト表示しています。
実行結果
これから実装するのであればRecyclerViewを用いていくのがベストだと思います。
近々の投稿でRecyclerViewの実装方法を紹介しますので、そちらを参考にしてください。
お楽しみに。