[Android Studio] ListViewでよく使うAdapterの種類

どうも、tatsuです!

今日は、ListViewでよく使うAdapterの種類を説明します。

※この記事で使用しているAndroid Studioのバージョンは2.3.3です。

ListViewでよく使うAdapterの種類

今回はListViewでよく使うAdapterとして、ArrayAdapterとSimpleAdapterを紹介します。

ArrayAdapter

ArrayAdapterはリストの1項目に1つの値を入れるときに使用します。
良く使う書き方として↓

MainActivity.java

        // ListViewに表示する項目を生成
        ArrayList<String> noodleList = new ArrayList<>();
        noodleList.add("そば");
        noodleList.add("うどん");
        noodleList.add("そうめん");
        noodleList.add("パスタ");
        noodleList.add("ラーメン");
        noodleList.add("ペンネ");

        /**
         * Adapterを生成
         * android.R.layout.simple_list_item_1 : リストビュー自身のレイアウト。今回はAndroid標準のレイアウトを使用。
         * noodleList : Adapterのコンストラクタの引数としてListViewに表示する項目のリストを渡す。
         */
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, noodleList);

        // idがlistのListViewを取得
        ListView listView = (ListView) findViewById(R.id.list);
        listView.setAdapter(arrayAdapter);

や、↓があります。

MainActivity.java

        String[] noodleList = {"そば","うどん","そうめん","パスタ","ラーメン","ペンネ"};

        /**
         * Adapterを生成
         * android.R.layout.simple_list_item_1 : リストビュー自身のレイアウト。今回はAndroid標準のレイアウトを使用。
         * noodleList : Adapterのコンストラクタの引数としてListViewに表示する項目のリストを渡す。
         */
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, noodleList);

        // idがlistのListViewを取得
        ListView listView = (ListView) findViewById(R.id.list);
        listView.setAdapter(arrayAdapter);

基本的に上記の使い方をしますが、もっと詳しく知りたい方はArrayAdapter詳細を参照してください。

SimpleAdapter

SimpleAdapterはリストの1項目に2つ以上の値を入れるときに使用します。
下記のように使用します。

MainActivity.java

        // ListViewに表示する項目を生成
        ArrayList<HashMap<String, String>> listData = new ArrayList<>();
        for(int i = 1; i <=  5; i++){
            HashMap<String,String> data = new HashMap<>();
            // 引数には、(名前,実際の値)という組合せで指定します 名前はSimpleAdapterの引数で使用します
            data.put("item","項目"+i);
            data.put("subItem","サブ項目"+i);
            listData.add(data);
        }

        /**
         * Adapterを生成
         * android.R.layout.simple_list_item_2 : リストビュー自身のレイアウト。今回はAndroid標準のレイアウトを使用。
         * new String[]{"item","subItem"} : 受け渡し元項目名
         * new int[]{android.R.id.text1, android.R.id.text2} : 受け渡し先ID
         */
        SimpleAdapter simpleAdapter = new SimpleAdapter(this,
                listData, // 使用するデータ
                android.R.layout.simple_list_item_2, // 使用するレイアウト
                new String[]{"item","subItem"}, // どの項目を
                new int[]{android.R.id.text1, android.R.id.text2} // どのidの項目に入れるか
                );

        // idがlistのListViewを取得
        ListView listView = (ListView) findViewById(R.id.list);
        listView.setAdapter(simpleAdapter);

Android標準レイアウトの実装はこちら

simple_list_item_2.xml

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/listPreferredItemHeight"
    android:mode="twoLine"
    android:paddingStart="?attr/listPreferredItemPaddingStart"
    android:paddingEnd="?attr/listPreferredItemPaddingEnd">

    <TextView android:id="@id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:textAppearance="?attr/textAppearanceListItem" />

    <TextView android:id="@id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/text1"
        android:layout_alignStart="@id/text1"
        android:textAppearance="?attr/textAppearanceListItemSecondary" />

</TwoLineListItem>

もっと詳しく知りたい方はSimpleAdapter詳細を参照してください。

補足
Android標準レイアウトの実装を見たい場合、Android Studio上でshiftボタンを2回押します。(Windows)
そうすると検索窓がでてくるので、実装が見たいレイアウトの名前を検索するだけです。

↓Android標準レイアウトは以下を参照
Android標準レイアウト一覧

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です