質問: Android - AlertDialogのアイテムのisChecked()を取得しますか? `setMultiChoiceItems()`を使用してチェックボックス項目で `AlertDialog` を作成しました。 Dialogに `setPositiveButton()`と `setNegativeButton()`を追加しました。 ポジティブボタンを押すと、ダイアログ内の項目のリストを繰り返して、それぞれがチェックされているかどうかを判断したいと思います。しかし、これを行うには明らかな方法はないと思われます。 私はこれからアイテムのリストを得ることができます: ``` alertDialog.getListView().getItemAtPosition(n); ``` `isChecked()`などの項目があるかどうかは確認できません。私ができることは、 `.toString()`を使ってテキストを印刷することだけです。 私がしたいことを行う唯一の方法は、onMultiChoiceClickListener()。onClick()を使用してアイテムがチェックされたときに待機し、クリックされたアイテムとチェックされているかどうかを判断することです。この情報を配列またはリストに格納する必要があります。次に、ポジティブボタンが押されたときに、この配列を参照して、チェックされているかどうかを判断する必要があります。私はこの方法がうまくいくことを知っていますが、事実の後で項目がチェックされているかどうかをチェックするプログラム的な方法はありますか?
回答: 最も簡単でおそらく最も汚い答えはCheckBoxにキャストすることです (CheckBox)alertDialog.getListView()。getItemAtPosition(n))。isChecked();//ClassCastExceptionを回避するためにキャストの前にinstanceofのチェックを行う もう1つの方法は、選択された項目を保持するオブジェクト(配列やリストを保持するバンドルまたはその他のもの)を渡す、警告ダイアログを拡張する方法(選択されたチェックボックスを返すメソッドを追加する)です。 onMultiChoiceClickListener()。onClick()を使用する必要があります。チェックボックスがオフの場合は配列から削除し、onClickメソッドでチェックされている場合は追加します。または、キーとして選択され、選択されていないマップ(マルチマップ参照:google guavaまたはapache)と、値としてチェックボックス(バッキングオブジェクトが望ましい)を使用できます。 HTH