Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

2.06. ListView と ViewPager

ketazawa edited this page Apr 26, 2013 · 24 revisions

この章では、ListView と ViewPager の2つの特殊な View について解説します。

参考:Building Layouts with an Adapter | Android Developers

目次

ListView

ListView は、縦にスクロールする一覧表示のための View です。

ListView 自身には、一覧の中身を管理する機能はありません。
代わりに、Adapter という仕組みを用いて、データソースの管理と、データの View へのバインドをさせ、ListView は、スクロール位置に合わせて必要な View を Adapter から取り出すことをします。

リストデータは、List インタフェースを実装したデータソースや、或いは、データベースへ問い合わせた結果のデータソースである場合もあります。

ListAdapter

データをバンドして表示する際には、ListAdapterインタフェースを実装したAdapterを使用します。
Adapterにはいくつか提供されています。以下はその一部となります。

名前 役割
ArrayAdapter 配列のデータをバインドする際に使用します。
SimpleCursorAdapter データベースへ問い合わせた結果をバインドする際に使用します。

ArrayAdapterの使用例

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mActivity = this;

        // リストに表示するデータを作成する
        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i < 20; i++) {
            list.add("hoge" + i);
        }

        ListView listView = (ListView) findViewById(R.id.ListView);
        // android.R.layout.simple_list_item_1はAndroidで既に定義されているリストアイテムのレイアウトです。
        // 中身はTextViewが1つあるだけです。
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(mActivity,
                android.R.layout.simple_list_item_1, list);

        listView.setAdapter(adapter);
        // リストアイテムをタップした時の動作を定義する
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // Adapterからタップした位置のデータを取得する
                String str = (String) parent.getItemAtPosition(position);
                Toast.makeText(mActivity, str, Toast.LENGTH_SHORT).show();
            }
        });
    }

listview

リストアイテムをカスタマイズする

ViewPager

ViewPager は、横にフリックして View を切り替えるための View です。
単純な View だけでなく、Fragment を持たせて、複数の Fragment を切り替える用途にも使用出来ます。

ViewPager も、ListView と同じく、Adapter に中身を管理させます。

PagerAdapter

FragmentPagerAdapter

GitHub Pagesへ移行しましたmixi-inc.github.ioへお願いします。

Clone this wiki locally