アラートダイアログの作成は以下を参照してください
アラートダイアログを表示させる
今回はアラートダイアログに3つの項目のチェックボックスを表示させ
自分で選択したものをTextViewに反映するものを使用したいと思います
まずはmain.xmlにボタンとテキストビューを1つずつ配置します
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ダイアログ表示" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout>次にMainActivity.javaを修正します
動作の目的としては
(1)ボタンを押すとアラートダイアログが表示
(2)チェックボックスの項目を選択する
(3)OKボタンでテキストビューに選択したものが反映される
とします
(1)ボタンを押すとアラートダイアログが表示
button bにid button1を設定します
そのあとsetOnClickListenerでボタンが押された時の動作を定義します
ボタンがクリックされるイベントを取得
ボタンを押すとアラートダイアログ dlgが作成されるようにします
(2)チェックボックスの項目を選択する
アラートダイアログにチェックボックスを表示させるには
setMultiChoiceItemsを使用します
また、表示するリストと初期の選択の有無はあらかじめ設定しておきます
3)OKボタンでテキストビューに選択したものが反映される
最後にOKボタンの設定をして押されるとテキストビューに反映されるようにします
以下にMainActivity.javaを記載します
package blog.test; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setTitle("MainActivity"); //表示するリストを作成 final CharSequence[] list = new CharSequence[3]; list[0] = "りんご";list[1] = "みかん";list[2] = "いちご"; /**item初期値設定**/ final boolean[] checkedItems = new boolean[3]; checkedItems[0]=true;checkedItems[1]=true;checkedItems[2]=true; //id button1をbに当てはめている Button b = (Button)findViewById(R.id.button1); //bが押された時の動作 b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { final StringBuffer select= new StringBuffer(); /**アラートダイアログ設定**/ AlertDialog.Builder dlg= new AlertDialog.Builder(MainActivity.this); dlg.setTitle("くだもの一覧"); dlg.setMultiChoiceItems(list, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int which, boolean isChecked) { //デフォルトで項目が選択されているかどうかを示す論理値を、配列で指定 checkedItems[which]=isChecked; } }); /**OKボタンが押された時の設定**/ dlg.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { for(int i=0;i
今回のリストは“りんご”“みかん”“いちご”としました
checkedItemsにより初期値はすべて選択されている状態です
ture→falseにすると選択してない状態でダイアログが表示されます
ダイアログ内ではcheckedItems[which]によって値を参照しています
プログラムを実行すると・・・
初期画面です
TextViewは初期値そのままです
ボタンを押すと・・・
アラートダイアログが表示されます
りんご・みかんを選択した状態でOKを押すと・・・
↓
テキストビューに選択したものが反映されます
スポンサードリンク