Androidアプリ開発のコードをJavaの文法に沿って解説を加えてみた(文字列リストの表示)。Genericsとかクラス型変数について
目次
上の画像はAndroidアプリ開発で、単純に文字列のリストを表示させたものです。
表示をさせるために、javaファイルが必要となるわけですが、javaを学習したことのない初心者(自分)にとって、読んで理解するだけでも結構難しく感じます。
そこで今回は、リストを表示させるために使用したコードについて、Javaの文法よりに解説をしたいと思います。
文字列を表示させるためのjavaファイルのコード
今回の記事の前提となる、javaファイルのコードです。15行目から23行目のコードについて、解説を加えていきます。
package edu.self.myliistview5; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // データを準備 String [] prefs = {"Osaka", "kyoto", "Hyogo"}; // Adapterを準備 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_pref1, prefs); // ListViewにAdapterを設置 ListView myListView = (ListView) findViewById(R.id.myListView); myListView.setAdapter(adapter); } }
String型の配列を宣言(16行目)
String[] prefs = {"Osaka, "kyoto", "Hyogo"};
構成要素型はString型の配列で、構成要素は{“Osaka, “Kyoto”, “Hyogo”}の3つ。
class(クラス)のあとの山かっこ(19行目)
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, items);
Javaをちゃんと学習したことのない自分にとって、最も理解に苦しんだのがここです。なぜクラスの後に<>(山かっこ)が来るのか?
Generics(ジェネリクス)と型変数
これはJavaのGenericsという考え方で、型を変数化しているためです。こちらのサイト(新しいタブで開く)でGenericsについて、詳しく説明されているので一部引用させてもらいます。
Generics はクラスの定義内で用いられる型を変数化することで、インスタンスを作成するときまで具体的な型を抽象的に表現し、インスタンス生成時に具体的な型を指定します。
(中略)
Genericsの概念は、型宣言で指定される型パラメータリスト (Type parameter) と、型パラメータリストで宣言される型変数 (Type variable) で構成されます。
Genericsの使い方(22行目)
Genericsは、具体的に次のように使います。
new GenericsTest <String>();
パラメータ化された型をインスタンス化するとき
GenericsTest <String> obj = new GenericsTest <String>();
パラメータ化された型のインスタンスを変数に保存するとき
クラス型変数にメソッドの返り値を代入(23,24行目)
ListView myListView = (ListView) findViewById(R.id.myListView);
ListViewクラスのmyListView(クラス型変数)に、ListView型でキャストしたfindViewByIdメソッドの返り値を代入します。
myListView.setAdapter(adapter);
クラス型変数myListViewを、”.”(ドット演算子)を使って、adapterを引数としたsetAdapterメソッドを呼び出します。
〔参考サイト〕