Android

【Android】テーブルに動的に行を追加する方法【コピペでOK】

2021年9月4日

Pocket

こんにちは、せのり@senoriblog)です!

今回はAndroidでテーブルに動的に行を追加する方法を紹介します。

テーブル(TableLayout)の行数を動的に変更したい、という場面がちょくちょくあると思います。

例えば、以下のようなデータベースの検索結果を、、

No Name Position Birth
11 小笠原 慎之介 投手 1997/10/8
12 田島 慎二 投手 1989/12/21
13 橋本 侑樹 投手 1998/1/8
14 谷元 圭介 投手 1985/1/28

 

こんな感じに表示したいときなど。
予めデータ件数が分かっていなくても、
件数に合わせて自動的に行を追加するプログラムを紹介します。

 

この記事ではコピペで使えるようにコードをまとめました。

上記の内容で解説します。 それでは、順番にみていきましょう。

 

TableLayoutとは

マス目、格子状に区切って表形式でデータや画像等を表示したいときに使用します。
HTML の table タグのようなイメージです。

表の行数、列数が固定の場合は、レイアウトファイル(XML)にそのまま表示したい内容を記載すれば良いですが、
データベースからデータを検索して取得結果を画面に表示したいときなど、
表示する件数が事前に分からないケースは XML には固定で書けないので、
Java で動的に行を追加する必要があります。

 

【コード】重複データを削除する方法

ということで、その記述は以下の通り。
まずは、MainActivity.java のコードから。

17行目のforが行(データ数)のループで、
25~87行目で列ごとにセルの値や文字サイズ等を設定しています。
今回は4列あるので、変数tv1tv2tv3tv4を宣言しています。
97~100行目で変数trに1行分のデータを入れて、
101行目で変数mTableLayouttrを入れています。

次は、activity_main.xml のコードです。
25行目のTableLayoutが行を動的に追加しているテーブルです。

次は、テーブルにセットするデータを保持する Model クラスです。
今回の主旨とはあまり関係ないですが参考までに掲載します。
今回は Player.java に固定値でデータを記載していますが、
本来はデータベースから取得したデータを保持するプログラムとなります。

 

【解説】どういう処理をしているのか

処理の全体の流れとしては、

  1. セル(TextView)にデータを格納
  2. 1を列の数だけ繰り返す
  3. 行(TableRow)にセル(TextView)を追加
  4. テーブル(TableLayout)に行(TableRow)を追加
  5. 1~4を行の数だけ繰り返す

となります。

1.セル(TextView)にデータを格納

MainActivity.java の以下のコードでセルにデータを格納しています。

2行目で1列目のセルの変数を宣言しています。
final TextView tv = new TextView(this);
14行目のsetText()でセルに表示する値を設定しています。

今回は4列のテーブルなので、「セル(TextView)にデータを格納」を4回繰り返しました。
列を増やしたい場合は上記プログラムを追加してください。

また、i == -1の場合はテーブルのヘッダー行を作成しています。

行(TableRow)にセル(TextView)を追加
テーブル(TableLayout)に行(TableRow)を追加

2行目で行の変数を宣言しています。
final TableRow tr = new TableRow(this);
10~13行目のaddView(tv)でセルを行の変数に詰めています。

14行目でテーブルに行の変数を詰めています。
mTableLayout.addView(tr, trParams);

これをデータの行数分繰り返し行います。
最終的にmTableLayoutに全ての行の変数が詰め込まれると、
テーブルへのデータ格納が完了です。

以下のレポジトリにソースコードをアップしてあります。

参考

How to add table rows Dynamically in Android Layout?

-Android
-, , ,

Copyright© SENORI BLOG , 2021 All Rights Reserved Powered by AFFINGER5.