I have this code to show a dialog with singlechoice(radio) options.
AlertDialog ad = new AlertDialog.Builder(this) .setCancelable(false) .setIcon(R.drawable.alert_dialog_icon) .setTitle(R.string.choose_one) .setSingleChoiceItems(seq, pos,null) .setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int whichButton) { // dialog dismissed } }).create();
How do I get the choice that has been selected?
Alert Dialog code has three methods:setTitle() method for displaying the Alert Dialog box Title. setMessage() method for displaying the message. setIcon() method is used to set the icon on the Alert dialog box.
AlertDialog is a lightweight version of a Dialog. This is supposed to deal with INFORMATIVE matters only, That's the reason why complex interactions with the user are limited. Dialog on the other hand is able to do even more complex things .
Navigate to the app > res > layout and create a new layout file. Add a ListView as shown below. This layout would be displayed inside the AlertDialog.
The way to make a checkbox list is to use setMultiChoiceItems in the AlertDialog . // Set up the alert builder AlertDialog. Builder builder = new AlertDialog. Builder(context); builder.
I know this is an old post, but i just came across it, and found that this solution seems at bit more simple that whats been posted here.
You can just do like this:
In your onClick()
handler on the dialog positive button, add the following code:
ListView lw = ((AlertDialog)dialog).getListView(); Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());
Note that if you haven't selected any option it will crash you have to add a check here before getting the checkedItem
with if(lw.getCheckedItemCount() > 0)
I tried to use ListView.setSelection(int)
but it never worked as expected so instead I decided to make use of View.setTag() to temporarily store the selected position.
.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { ListView lv = ((AlertDialog)dialog).getListView(); lv.setTag(new Integer(which)); } })
The tag can then be accessed easily after a button click.
.setPositiveButton(R.string.button_text, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { ListView lv = ((AlertDialog)dialog).getListView(); Integer selected = (Integer)lv.getTag(); if(selected != null) { // do something interesting } } })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With