上の画像はAndroidアプリ開発で、単純に文字列のリストを表示させたものです。
表示をさせるために、javaファイルが必要となるわけですが、javaを学習したことのない初心者(自分)にとって、読んで理解するだけでも結構難しく感じます。
そこで今回は、リストを表示させるために使用したコードについて、Javaの文法よりに解説をしたいと思います。
文字列を表示させるためのjavaファイルのコード
今回の記事の前提となる、javaファイルのコードです。15行目から23行目のコードについて、解説を加えていきます。
[php]
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);
}
}
[/php]
String型の配列を宣言(16行目)
[php]
String[] prefs = {"Osaka, "kyoto", "Hyogo"};
[/php]
構成要素型はString型の配列で、構成要素は{“Osaka, “Kyoto”, “Hyogo”}の3つ。
class(クラス)のあとの山かっこ(19行目)
[php]
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, items);
[/php]
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行目)
[php]
ListView myListView = (ListView) findViewById(R.id.myListView);
[/php]
ListViewクラスのmyListView(クラス型変数)に、ListView型でキャストしたfindViewByIdメソッドの返り値を代入します。
[php]
myListView.setAdapter(adapter);
[/php]
クラス型変数myListViewを、”.”(ドット演算子)を使って、adapterを引数としたsetAdapterメソッドを呼び出します。
〔参考サイト〕