リストビューを使ってデータを一覧表示する


リストビューを使うと、配列やデータベース上のデータなど、
複数のデータを一覧表示することができます。
アドレス帳やメモ帳など、さまざまな用途で使用することができます。

リストビューの使い方の詳しい説明は続きからご覧下さい。

リストビューを使用したレイアウト

まずリストビューを使用したレイアウトを定義しましょう。
リストビューのIDは「@android:id/list」にしておく必要があります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView
	android:id="@android:id/list"
	android:choiceMode="singleChoice"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content" />
</LinearLayout>

アクティビティ

実際のアクティビティのコードは以下のようになります。

public class ListViewSample extends ListActivity {
    /** Called when the activity is first created. */

	static final String[] COUNTRIES = new String[] { "Afghanistan", "Albania", "Algeria", "American Samoa" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, COUNTRIES));
//        getListView().setTextFilterEnabled(false);
    }

    protected void onListItemClick(ListView l, View v, int position, long id) {
    	TextView t = (TextView)v;
    	super.onListItemClick(l, v, position, id);
    	Log.i("ListViewSampleSample", t.getText().toString() + position);
    }
}

まずリストビューを使うには、リストビューを使うアクティビティに
リストアクティビティクラスを継承します。

public class ListViewSample extends ListActivity {
...

次にリストに表示するデータをアダプタクラスを使って設定します。
配列を扱う場合はArrayAdapterクラス、データベースを扱う場合はCursorクラスを使用します。
今回は配列を扱うのでArrayAdapterクラスを使用します。
そして、そのArrayAdapterクラスをsetListAdapterメソッドでアクティビティに設定します。

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, COUNTRIES));

ArrayAdapterクラスの定義は以下のようになっており、

ArrayAdapter(Context context, int textViewResourceId, List<T> objects)

コンテキストとTextViewのリソースID、各行のデータを示す配列オブジェクトを指定します。

リスト項目を選択したときに処理をさせる

リスト項目を選択したときになにか処理をさせたいときは
onListItemClickメソッドを使います。

    protected void onListItemClick(ListView l, View v, int position, long id) {
    	TextView t = (TextView)v;
    	super.onListItemClick(l, v, position, id);
    	Log.i("ListViewSampleSample", t.getText().toString() + position);
    }

この例ではリスト項目が選択されたときに、リスト項目の内容と
先頭から何番目であるかを示したpositionをログに表示しています。

4 Comments