Androidアプリ開発のコードをJavaの文法に沿って解説を加えてみた(文字列リストの表示)。Genericsとかクラス型変数について

java_for_android

android_generics1

上の画像は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メソッドを呼び出します。

〔参考サイト〕

java_for_android

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次