【Android】パパっと使えるAlertDialog一覧

#はじめに
普段使いたい場面で使い方を忘れるAlertDialogを、パパっと使うための備忘録です。
@suzukihrさんが書かれている【[コピペしてすぐ使えるアラートダイアログ集](https://qiita.com/suzukihr/items/8973527ebb8bb35f6bb8)】を参考に、
さらに初心者向けに追記しKotlinで書き直したものとなります。

※ActivityやFragmentなどに直接コピペして使用できますが、
　画面回転時にメモリリークが発生する可能性があるため、
　DialogFragmentを継承したクラスを作って使用することをおすすめします。



##通常ダイアログ（Yesのみ）
<img width="500" alt="通常ダイアログ_YES.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106030/ed8a357b-6bad-59a4-1d7f-40a12ea72b12.png">

```kotlin
AlertDialog.Builder(this) // FragmentではActivityを取得して生成
		.setTitle("タイトル")
		.setMessage("メッセージ")
		.setPositiveButton("OK", { dialog, which ->
			// TODO:Yesが押された時の挙動
		})
		.show()
```


##通常ダイアログ（Yes・No）
<img width="500" alt="通常ダイアログ_YES_NO.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222142/91cc8ee1-22c7-7bd9-3055-790b5ef87677.png">


```kotlin
AlertDialog.Builder(this) // FragmentではActivityを取得して生成
		.setTitle("タイトル")
		.setMessage("メッセージ")
		.setPositiveButton("OK", { dialog, which ->
			// TODO:Yesが押された時の挙動
		})
		.setNegativeButton("No", { dialog, which ->
			// TODO:Noが押された時の挙動
		})
		.show()
```


##通常ダイアログ（Yes・No・その他）
<img width="500" alt="通常ダイアログ_YES_NO_その他.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106030/8f2699cb-4fa6-b05b-4660-042041d58c6a.png">

```kotlin
AlertDialog.Builder(this) // FragmentではActivityを取得して生成
		.setTitle("タイトル")
		.setMessage("メッセージ")
		.setPositiveButton("OK", { dialog, which ->
			// TODO:Yesが押された時の挙動
		})
		.setNegativeButton("No", { dialog, which ->
			// TODO:Noが押された時の挙動
		})
		.setNeutralButton("その他", { dialog, which ->
			// TODO:その他が押された時の挙動
		})
		.show()
```


##通常ダイアログ（アイコン付き）
<img width="500" alt="通常ダイアログ_YES_NO_その他_アイコン.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106030/b0aee707-1d6e-db28-4885-c2166f712486.png">


```kotlin
AlertDialog.Builder(this) // FragmentではActivityを取得して生成
		.setTitle("タイトル")
		.setMessage("メッセージ")
		.setPositiveButton("OK", { dialog, which ->
			// TODO:Yesが押された時の挙動
		})
		.setNegativeButton("No", { dialog, which ->
			// TODO:Noが押された時の挙動
		})
		.setNeutralButton("その他", { dialog, which ->
			// TODO:その他が押された時の挙動
		})
		.setIcon(R.mipmap.ic_launcher)
		.show()
```



##リスト項目選択ダイアログ
リスト表示では **setItems** を使用します。

>第１引数(CharSequence[])：リスト表示する文字配列
>第２引数(OnClickListener)：項目クリック時のクリックリスナー

<img width="500" alt="リスト選択ダイアログ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222142/ccf66caf-04fd-84d0-3f7f-7e2b4dfea2e4.png">

```kotlin
val strList = arrayOf("りんご","みかん","ぶどう")

AlertDialog.Builder(this) // FragmentではActivityを取得して生成
		.setTitle("リスト選択ダイアログ")
		.setItems(strList, { dialog, which ->
			// TODO:アイテム選択時の挙動
		})
		.setPositiveButton("OK", { dialog, which ->
			// TODO:Yesが押された時の挙動
		})
		.show()
```


##ラジオボタン項目選択ダイアログ
ラジオボタン表示では **setSingleChoiceItems** を使用します。

>第１引数(CharSequence[])：リスト表示する文字配列
>第２引数(int)：デフォルトでチェックを入れる位置
>第３引数(OnClickListener)：項目クリック時のクリックリスナー


<img width="500" alt="ラジオボタン選択ダイアログ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106030/ba136704-b984-596b-b432-3e42f932fdf0.png">

```kotlin
val strList = arrayOf("りんご","みかん","ぶどう")

AlertDialog.Builder(this) // FragmentではActivityを取得して生成
		.setTitle("ラジオボタン選択ダイアログ")
		.setSingleChoiceItems(strList, 0, { dialog, which ->
			// TODO:アイテム選択時の挙動
		})
		.setPositiveButton("OK", { dialog, which ->
			// TODO:Yesが押された時の挙動
		})
		.show()
```


##チェックボックス選択ダイアログ
チェックボックス表示では **setMultiChoiceItems** を使用します。

>第１引数(CharSequence[])：リスト表示する文字配列
>第２引数(boolean[])：デフォルトでチェックを入れておく状態を管理する配列
>第３引数(OnClickListener)：項目クリック時のクリックリスナー

<img width="500" alt="チェックボックス選択ダイアログ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106030/1e027fcb-9741-cae9-85cb-fd388f170dbe.png">

```kotlin
val strList = arrayOf("りんご","みかん","ぶどう")
val checkedItems = booleanArrayOf(true, false, false)

AlertDialog.Builder(this) // FragmentではActivityを取得して生成
		.setTitle("チェックボックス選択ダイアログ")
		.setMultiChoiceItems(strList, checkedItems, { dialog, which, isChecked ->
			// TODO:アイテム選択時の挙動
		})
		.setPositiveButton("OK", { dialog, which ->
			// TODO:Yesが押された時の挙動
		})
		.show()
```

#その他、設定関連
■setCancelable
ダイアログの表示範囲外をタップした際に、ダイアログが閉じれるかどうかを設定します。
>setCancelable(cancelable : Boolean)


■setView
 自分で作ったレイアウトやViewを直接セットするときに使用します。
>setView(layoutResId : Int)
>　　　　or
>setView(view : View)