この記事では、前回の記事で取り込んだエクセルのデータをプログラミング時に扱いやすくするコードについて解説します。
手順としては、
- 1行分の情報をまとめておくクラスをつくる
- ↑のクラスをまとめるクラス配列をコンストラクタで生成する
- クラス配列から欲しいデータを出し入れ
のようにやっていきます。
1.1行分の情報をまとめておくModelCharaクラスを作る
ナンバー、名前、年齢、性別、備考をまとめて1人分とするクラスをつくります。
ここでの変数を増やすことで、さらに多くの情報を取り込むことも可能です。
[ModelChara.java]
public class ModelChara { int id = 0; String name = ""; int age = 0; boolean sex = true; String memo = ""; public ModelChara(int id, String name, int age, boolean sex, String memo) { super(); this.id = id; this.name = name; this.age = age; this.sex = sex; this.memo = memo; } public int getID(){ return id; } public String getName(){ return name; } public int getAge(){ return age; } public boolean getSex(){ return sex; } public String getMemo(){ return memo; } }
クラスを生成する際にコンストラクタで変数を格納していきます。
下の方のメソッドは、実際にデータを取り出す時に使います。
2.クラス配列をコンストラクタで生成する
すでに前回の記事で画像が出ていますが、1.のクラスを継承したクラス配列を生成します。
このファイルのコンストラクタで、エクセルから変換したデータを取り込むことになります。
ですので、エクセルで関数を使ってセルの内容をまとめるときには、このような完成形をイメージしてから結合しないといけません。
[CharaData.java]
public class CharaData { private ArrayList<ModelChara> chara_data = new ArrayList<ModelChara>(); //コンストラクタにて情報を格納 public CharaData() { chara_data.add(new ModelChara(1, "波平", 54, true, "1本だけ")); chara_data.add(new ModelChara(2, "フネ", 50, false, "")); chara_data.add(new ModelChara(3, "マスオ", 28, true, "早稲田大学商学部")); chara_data.add(new ModelChara(4, "サザエ", 24, false, "老けすぎではないか")); chara_data.add(new ModelChara(5, "カツオ", 11, true, "発想(企画力)\n話術(営業力)\n体育会系(野球ばっかしてる)\n将来は良い営業マン")); chara_data.add(new ModelChara(6, "ワカメ", 9, false, "パンツ")); chara_data.add(new ModelChara(7, "タラヲ", 3, true, "")); chara_data.add(new ModelChara(8, "タマ", 9, true, "メスだと思ってた……")); } public ArrayList<ModelChara> getData() { return this.chara_data; } }
こちらのファイルでも、1.と同じく、getData()メソッドは、クラス配列を取り出すのに必要なものです。
3.Activitiyでクラス配列から欲しいデータを出し入れ
さて、Activityで実際にデータをやりとりするときは下記のようにします。
[SampleActivity.java]
<pre>//キャラデータ読み込み CharaData class_chara = new CharaData(); ArrayList<ModelChara> chara_data = class_chara.getData(); //マスオの年齢を取得したいとき int masuo_age = chara_data.get(2).getAge(); //タマの名前を取得したいとき String cat_name = chara_data.get(7).getName();
1.と2.の手順は一件面倒なように思えますが、複数のActivityで何度も繰り返しデータを出し入れする場合には、ファイルを分けて管理するのが簡単です!
実際に使うときには、クラス配列なのでchara_dataをListViewに読み込ませていたりします。クリックした行の番号をchara_data.get(○○)の添え字として渡したり、とか。
エンジニアではない人とドキュメントを受け渡しすると、エクセルが使われることが非常に多いので、こういうやり方を覚えておくと便利ですよ!