2012年6月9日土曜日

テキストを表示するシンプルなリスト表示 (ListView)

Android アプリで、リスト表示するには、ListView (リストビュー) クラスを使用します。
リストの項目にテキストを表示する ListView (リストビュー) のシンプルな使い方を紹介します。
(ListView の表示と、項目の選択イベントについて)


ListView (リストビュー) を表示し、項目選択イベント処理を行うには、
  1. リソースファイル (xml) に ListView (リストビュー) を定義する
  2. ソースファイルで、ListView に表示する項目を設定する
  3. ListView (リストビュー) に項目選択イベントを登録する
という手順になります。


■ リソースファイル

layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/listView1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
/>


■ ソースファイル

src/ListViewSample.java
package jp.sample.listview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ListViewSampleActivity extends Activity {

    // リストに設定するアイテム
    private final String[] item = new String [] {
        "listView item 1",
        "listView item 2",
        "listView item 3"
    };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // ListView に設定するデータ (Adapter) を生成する
        // (データを設定するには、Adapter (アダプタ) を使用する必要がある)
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_list_item_1, item);

        // リストビューにデータ (adapter) を追加
        ListView listView1 = (ListView)findViewById(R.id.listView1);
        listView1.setAdapter(adapter);

        // アイテムクリック時のイベントを追加
        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, 
                                    View view, int pos, long id) {
                // 選択アイテムを取得
                String str = (String)parent.getItemAtPosition(pos);
                Toast.makeText(ListViewSampleActivity.this, 
                               str, Toast.LENGTH_SHORT).show();
            }
        });
    }
}




■ 説明

1. リソースファイル (xml) に ListView (リストビュー) を定義する

ListView を使用するには、 ListView タグを定義します。テキストを表示するリストを使う場合、特別な属性の設定などはありません。高さと幅を指定するだけです。
<ListView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/listView1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
/>


2. ソースファイルで、ListView に表示する項目を設定する

ListView に表示する項目を設定するには、Adapter (アダプタ) クラスを使う必要があります。
ここでは文字を表示するリストにするので、文字列を定義します。
// リストに設定するアイテム
private final String[] item = new String [] {
    "listView item 1",
    "listView item 2",
    "listView item 3"
};

アダプタを生成し、表示する文字を追加します。
文字列の表示なので、String 型とします。第二引数には、ListView の各アイテムに用いるレイアウトリソースを指定します。ここでは、Android 標準で用意されている simple_list_item_1 を使用します。これは、文字を表示するためのレイアウトです。
// ListView に設定するデータを生成する
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        this, android.R.layout.simple_list_item_1, item);

そして、生成したアダプタを setAdapter メソッドで ListView に設定します。
// リストビューにデータ (adapter) を追加
ListView listView1 = (ListView)findViewById(R.id.listView1);
listView1.setAdapter(adapter);


3. ListView (リストビュー) に項目選択イベントを設定する

項目が選択されたときのイベントを設定するには、setOnItemClickListener メソッドを使用します。
// アイテムクリック時のイベントを追加
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
        // 選択アイテムを取得
        String str = (String)parent.getItemAtPosition(pos);
        Toast.makeText(ListViewSampleActivity.this, str, Toast.LENGTH_SHORT).show();
    }
});

そして、 onItemClick メソッドに項目が選択された時の処理を実装します。
引数の parent は、設定した Adapter (アダプタ)で、pos は、選択した項目の位置です。
選択された項目の文字を取得するには、
getItemAtPosition(pos) とすることで、取得できます。


0 件のコメント:

コメントを投稿