見出し画像

Androidアプリでアラートダイアログ(ラジオ風プルダウン)を作成

今回は下記のようなプルダウンを作成し、選択された文字をテキストビューへセットするというプログラムを作成します。

キャプチャ

ボタンとテキストビューの配置

activity_main.xml

    <Button
       android:id="@+id/button"
       style="@android:style/Widget.Holo.Light.Spinner"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent" />

   <TextView
       android:id="@+id/text_view"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="TEST"
       android:textSize="50dp"
       app:layout_constraintBottom_toTopOf="@+id/button"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent" />

キャプチャ

こんな感じになります。

各種設定

MainActivity.java

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {

   //宣言
   private ArrayAdapter<String> adapter;
   private Button spinnerButton;
   private AlertDialog alertDialog;
   private int selectedIndex = 0;
   private TextView textView;


   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       //アダプタの作成
       String item[] = {"カジノ", "パチンコ", "パチスロ"};
       adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, item);

       //ボタンの作成
       spinnerButton = (Button) findViewById(R.id.button);
       spinnerButton.setText("選択肢一覧");
       spinnerButton.setOnClickListener(onClickListener);
   }


   private View.OnClickListener onClickListener = new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           //アラートダイアログの作成
           AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
           //アラートダイアログのタイトル設定
           builder.setTitle("下記から選択してください");
           /*
           アラートダイアログをラジオボタン風に設定(setSingleChoiceItems)
           第1引数: アダプタ, 第2引数: デフォルトでチェックが入る一(0), 第3引数: 項目クリック時のリスナー
           */
           builder.setSingleChoiceItems(adapter, selectedIndex, onDialogClickListener);
           alertDialog = builder.create();
           alertDialog.show();
       }
   };



   private DialogInterface.OnClickListener onDialogClickListener = new DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which) {
           //アラートダイアログを閉じて、選択された文字をテキストビューへ表示
           alertDialog.dismiss();
           textView = (TextView)findViewById(R.id.text_view);
           textView.setText(adapter.getItem(which));
       }
   };
}


以上でアラートダイアログ(ラジオ風プルダウン)の作成となります。


過去記事

過去にJava関連の記事やpython関連の記事を書いているのでぜひ、そちらもご参照いただければ幸いです。



この記事が気に入ったらサポートをしてみませんか?