Working Demo

An AlertDialog is a Simplest way to get response from a user by providing them a option to select .This post will show you how can we add a list of choices to our AlertDialog box in android.
If you check official documentation that have describe that, their are total three kinds of lists that can be used with an AlertDialog in android :
- Traditional single-choice list
- Persistent single-choice list (radio buttons)
- Persistent multiple-choice list (checkboxes)
In this Tutorial i will give demo on all 3 kinds of alert dialog choice list
Basic to build a Alert Dialog Box
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose an Option");
Manually Create a Array list to display on a alert dialog
// add a list
String[] options = {"Option1", "Option2", "Option3", "Option4", "Option3"};
Create a dialog box and show to user on action
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
Traditional single-choice Android alert Dialog list.

The way to make use of a traditional single-choice list is to use setItems method.
Call the Below Function on button Click
public void TraditionallistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose an Option");
// add a list
String[] options = {"Option1", "Option2", "Option3", "Option4", "Option3"};
//Pass the array list in Alert dialog
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0: // Select option task
case 1: // Config it as you need here
case 2:
case 3:
case 4:
}
}
});
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
In Traditional list their is no need to set any positive button, as user select any list from alert dialog list the item will automatically gets selected and alert dialog get closed.
Radio button single-choice Android alert Dialog list.

The Best advantage of the radio button list over a Simple traditional list is that the user will be able to check which is the default selected option in the list where as in Traditional list their is no default option.
The way to make a radio button list is to use setSingleChoiceItems.
Call the below code on button Click.
public void radiolistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose a Option");
// add a radio button list
final String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
int checkedItem = 1; // cow
builder.setSingleChoiceItems(selectedoption, checkedItem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user checked an item
Toast.makeText(MainActivity.this,"selected option: "+selectedoption[which],Toast.LENGTH_LONG).show();
//here 'which' is the position selected
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
In Radiobutton list we can implement 2 kinds of buttons in alert dialog box i.e setPositiveButton() and setNegativeButton() with different actions.
Checkbox list choice Android alert Dialog list.

Here in Checkbox list alert dialog list user can select multiple option from the given options.
The way to make a checkbox list is to use setMultiChoiceItems.
public void checkboxlistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose some Options ");
// add a checkbox list
String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
final boolean[] checkedItems = {true, false, false, false, false};
builder.setMultiChoiceItems(selectedoption, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// user checked or unchecked a box
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
Complete Source Code android Alert Dialog with list of options
activitymain.xml for UI Design
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alert Dialog box with List "
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.07" />
<Button
android:id="@+id/listdialog1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:text="Simple list"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<Button
android:id="@+id/radiolist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:text="Radio button list"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/listdialog1" />
<Button
android:id="@+id/checkboxlist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="Checkbox list"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radiolist" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package protocoderspoint.com.customalertdialog;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button simplelist,radiolist,checkboxlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
simplelist=(Button)findViewById(R.id.listdialog1);
radiolist=(Button)findViewById(R.id.radiolist);
checkboxlist=(Button)findViewById(R.id.checkboxlist);
simplelist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
simplelistDialog();
}
});
radiolist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
radiolistDialog();
}
});
checkboxlist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkboxlistDialog();
}
});
}
public void simplelistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose an Option");
// add a list
String[] options = {"Option1", "Option2", "Option3", "Option4", "Option3"};
//Pass the array list in Alert dialog
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0: // Select option task
case 1: // Config it as you need here
case 2:
case 3:
case 4:
}
}
});
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
public void radiolistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose a Option");
// add a radio button list
final String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
int checkedItem = 1; // cow
builder.setSingleChoiceItems(selectedoption, checkedItem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user checked an item
Toast.makeText(MainActivity.this,"selected option: "+selectedoption[which],Toast.LENGTH_LONG).show();
//here 'which' is the position selected
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
public void checkboxlistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose some Options ");
// add a checkbox list
String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
final boolean[] checkedItems = {true, false, false, false, false};
builder.setMultiChoiceItems(selectedoption, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// user checked or unchecked a box
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
}
Recommended Android post





