[Android Studio] 複数選択ListViewを作る

どうも、tatsuです!

今日は、複数選択ListViewを作る方法を説明します。

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

複数選択ListViewを作る

単一複数ListViewを作るにはchoiceMode属性にmultipleChoiceを指定します。
また、ListViewのレイアウトも対象のものを使用します。

activity_main.xml

activity_main.xmlは以下のようにします。

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:choiceMode="multipleChoice"/>

MainActivity.java

MainActivity.javaは以下のようにします。

public class MainActivity extends AppCompatActivity {

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

        // 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_multiple_choice : 複数選択可能なレイアウト。今回はAndroid標準のレイアウトを使用。
         * noodleList : Adapterのコンストラクタの引数としてListViewに表示する項目のリストを渡す。
         */
        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, noodleList);

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

}

simple_list_item_multiple_choice.xml

参考に、今回使用したAndroid標準レイアウトの実装も見ておきます。

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" />

結果

コメントを残す

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