LIstActivityを作る2通りの方法
さてさて今までさらっと使用してきたListView。
実は以下の2通りの方法で記述ができます。
- Activityクラスを継承し作成する
- ListActivityクラスを継承し作成する
実行図
共通項目
配列はjava内に記述するわけではなく、ローカライズを意識してstrings.xml内に記述します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ListView</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string-array name="coj_p">
<item>Gold</item>
<item>Silver</item>
<item>Bronze</item>
</string-array>
</resources>
Activityクラスを継承し、LIstViewを作成する例
こちらの方法は画面レイアウトファイルにListViewを定義し、それをjava側で利用する方法です。
- MainActivity.java
package com.example.listview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] OCJ_P = getResources().getStringArray(R.array.coj_p);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, OCJ_P);
ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this,
parent.getAdapter().getItem(position) + "を選択しました。",
Toast.LENGTH_SHORT).show();
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>
ListActivityクラスを継承し、LIstViewを作成する例
こちらの方法はjava側でListViewを生成する方法です。
生成のタイミングは、setListAdapter()が呼ばれたところです。
- MainActivity.java
package com.example.listview;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Toast;
public class MainActivity extends ListActivity implements OnItemClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] OCJ_P = getResources().getStringArray(R.array.coj_p);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, OCJ_P);
setListAdapter(adapter);
getListView().setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this,
parent.getAdapter().getItem(position) + "を選択しました。",
Toast.LENGTH_SHORT).show();
}
}
これでOKです。
用途に併せて使い分けてください。

