<< Android-Note
選択ダイアログの作り方
複数の項目があってその中から1つだけを選ぶような選択ダイアログを作りたい場合は普通にListViewを使ってもできます。
しかし、AlertDialogならもっと楽な方法があります。
まずstring.xmlなどに表示したいアイテムのリストを作ります。
<string-array name="animal_list"> <item>Tiger</item> <item>Hourse</item> <item>Sheep</item> <item>Monkey</item> <item>Bird</item> </string-array>
このリストをAlertDialogから参照するだけで選択型ダイアログが作れます。
それが次のコードです。
public class MainActivity extends SherlockFragmentActivity { private final int SINGLE_CHOICE_DIALOG = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showDialog(SINGLE_CHOICE_DIALOG); } @Override public Dialog onCreateDialog(int id) { switch(id){ case SINGLE_CHOICE_DIALOG: AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("Animal List") .setSingleChoiceItems(R.array.animal_list, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i(LOG_TAG, "アイテムのインデックス番号 = " + which); } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {} }); return builder.create.show(); } } }
setSingleChoiceItemsメソッドにstring-arrayのID名、初期状態で選択されているアイテムのインデックス番号を渡しています。
そしてアイテムがタッチされるとonClickが呼ばれ、どのアイテムが押されたかのインデックス番号を知ることができます。
ただし、アイテムがタッチされても自動的にダイアログは閉じません。
このやり方で次の画像のようなダイアログが表示できます。
ListViewを使ってカスタムリストを作るよりはるかに簡単です。
以上、簡単に選択ダイアログの作る方法でした。では、また!
© Kaz