Android

[Android] データを一覧表示するリストビュー(ListView)を使う

Android でデータを並べて表示するには、ListView を使用します。iOS でいう UITableView に当たりますね。UITableView に比べて、セルの再利用を前提とした設計にする必要がなく、シンプルに実装できます。

リストビュー(ListView)を使用する

リストビューを使用した簡単な Activity クラスを以下に示します。ListView は、スクロール可能で、選択した項目をタップするとダイアログにその文字列を表示するようにしています。

package com.example.postalcode;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Activity;
import android.util.Log;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(linearLayout);

        // リストに表示するためのアダプタを作成する
        String[] array = {"北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県", "茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", "新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", "岐阜県", "静岡県", "愛知県", "三重県", "滋賀県", "京都府", "大阪府", "兵庫県", "奈良県", "和歌山県", "鳥取県", "島根県", "岡山県", "広島県", "山口県", "徳島県", "香川県", "愛媛県", "高知県", "福岡県", "佐賀県", "長崎県", "熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array);

        // ListView を作成する
        ListView listView = new ListView(this);
        listView.setOnItemClickListener(new ClickEvent()); // リスナを設定
        listView.setAdapter(adapter); // リストビューにアダプタを設定
        linearLayout.addView(listView);
    }

    class ClickEvent implements OnItemClickListener
    {
        public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {

            TextView textView = (TextView)view;

            // ダイアログを表示する
            new AlertDialog.Builder(MainActivity.this)
                    .setTitle(textView.getText())
                    .setPositiveButton("OK", null)
                    .show();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

ListView に表示させたいデータは、配列データからビューに表示させる ArrayAdapter を使用します。ListView の表示には、Android に用意されている表示形式(android.R.layout.simple_list_item_1)を指定しています。