【Android】アラートダイアログ(AlertDialog)にリストを追加して表示する方法
はじめに
この記事では、Androidアプリのアラートダイアログ(AlertDialog)にリスト形式の選択項目を追加する方法を、実際のサンプルコードとともに段階的に解説します。リストの各項目がタップされたときに、それぞれ異なる処理(Toast表示)を行う実装方法もあわせて紹介します。
ステップ1:Android Studioで新規プロジェクトを作成する
Android Studioを起動し、メニューから「File → New Project」を選択します。必要な情報をすべて入力して、新しいプロジェクトを作成しましょう。
ステップ2:res/layout/activity_main.xml にコードを追加する
まずはレイアウトファイルに以下のコードを記述します。
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:gravity = "center" android:layout_height = "match_parent"> <TextView android:id = "@+id/click" android:layout_width = "wrap_content" android:textSize = "30sp" android:layout_height = "wrap_content" android:text = "Click"/> </LinearLayout>
上記のコードでは、画面中央に大きめのサイズ(30sp)で「Click」というテキストを表示するTextViewを1つ配置しています。このTextViewをタップすると、後ほど実装するアラートダイアログが表示される仕組みです。
ステップ3:src/MainActivity.java にコードを追加する
次に、アクティビティクラスに以下のコードを記述します。
package com.example.myapplication;
import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView text;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.click);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAlertDialog();
}
});
}
private void showAlertDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("AlertDialog");
String[] items = {"java","android","Data Structures","HTML","CSS"};
alertDialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which) {
case 0:
Toast.makeText(MainActivity.this,"Clicked on java",Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(MainActivity.this,"Clicked on android",Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this,"Clicked on Data Structures",Toast.LENGTH_LONG).show();
break;
case 3:
Toast.makeText(MainActivity.this,"Clicked on HTML",Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(MainActivity.this,"Clicked on CSS",Toast.LENGTH_LONG).show();
break;
}
}
});
AlertDialog alert = alertDialog.create();
alert.setCanceledOnTouchOutside(false);
alert.show();
}
}
コードのポイント
- AlertDialog.Builder を使ってダイアログを生成し、setTitle() でタイトルを設定しています。
- setItems() メソッドに文字列配列を渡すことで、ダイアログ内にリスト形式の選択肢が自動的に表示されます。
- リスト項目がクリックされると onClick() の which パラメータ(選択された項目のインデックス番号)が取得できるため、switch文で分岐してそれぞれ異なるToastメッセージを表示しています。
- setCanceledOnTouchOutside(false) を指定することで、ダイアログの外側をタップしてもダイアログが閉じないように設定しています。
アプリを実行してみよう
それでは、実際にアプリケーションを実行してみましょう。ここでは、実際のAndroid端末をパソコンに接続しているものとして説明します。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルのいずれかを開き、ツールバーにある「Run」アイコンをクリックします。実行デバイスとして自分のモバイル端末を選択すると、端末に以下のような初期画面が表示されます。

次に、画面上のTextView(「Click」)をタップしてみてください。アラートダイアログが開き、リスト形式の選択項目が表示されます。

まとめ
アラートダイアログにリストを追加するには、AlertDialog.Builder の setItems() メソッドに表示したい項目の文字列配列を渡すだけで簡単に実装できます。選択された項目はコールバックのインデックス(which)で判別できるため、項目ごとの個別処理も柔軟に行えます。メニューやオプション選択など、ユーザーに複数の選択肢を提示したい場面でぜひ活用してみてください。
-
Androidでアラートダイアログを表示する方法【初心者向けサンプルコード付き】
Androidでアラートダイアログ(AlertDialog)を表示する方法このチュートリアルでは、Androidアプリでアラートダイアログを表示する方法を解説します。サンプルとして、戻るボタンが押されたタイミングで「本当に終了しますか?」という確認ダイアログを表示する実装を紹介します。アプリの誤操作による終了を防ぎたい場合などに役立つ、定番のテクニックです。手順1:Android Studioで新規プロジェクトを作成するまず、Android Studioを起動し、メニューから File → New Project を選択します。必要な項目(プロジェクト名、パッケージ名、保存場所など)を入力して
-
AndroidのカスタムListViewに検索機能を実装する方法【サンプルコード付き】
はじめに このチュートリアルでは、AndroidアプリのListView(リストビュー)に検索機能を実装する方法を解説します。EditTextに入力した文字列に応じて、表示中のリスト項目をリアルタイムで絞り込む仕組みを作成します。 手順1:新規プロジェクトを作成する Android Studioを開き、「File」→「New Project」を選択して、必要な項目をすべて入力し、新しいプロジェクトを作成します。 手順2:レイアウトファイル(activity_main.xml)を編集する res/layout/activity_main.xml に以下のコードを記述します。上部に検索ワードを入力