How to create Alert Dialog in Android. In this article, we will learn How to create Alert Dialog in the Android application. In this android tutorial, let’s create a simple android application to build Custom AlertDialog to add items to ListView and Display on the home Activity.
Android Project Structure
How to Create custom Alert Dialog in Android
Design a custom alert dialog in android. In the below android application example, We will create a simple android application to Add List items using Alert Dialog and display them in the list view.
Step 1: Create a new project with Empty Activity
- First, we create an object of all the views in the activity_main.xml file.
- Button object is used to connect to ButtonView of XML file, we used findViewById to assign button object to ButtonView.
- ListView object will be assigned to List in an XML file, these objects are used to make changes to view.
- You can use this adapter to provide views for an AdapterView, Returns a view for each object in a collection of data objects you provide.
- getArrayAdapter is a getter we will be using this getter to notify the adapter for data change whenever we add a new item to the list.
- DialogBuild is an object of our other class which we are using to create custom dialog
- R.id.btnAlert is the id of Button view in our XML file
- In ArrayAdapter we are passing the value where “this” is the context, followed by the style of list view and then the list of items
- setAdapter method is used to assign adapted to List View
- setOnClickListener method will be triggered when the user clicks on the button and the following statement will be executed
- we are calling openDialog method, in that method, we are calling dialogBuild.show which will display the dialog in the activity.
- When we click on the button it will display a dialog.
MainActivity.java
package com.example.alertdialog; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; public class MainActivity extends AppCompatActivity { private Button btnAlert; private ListView listView; private static ArrayAdapter<String> arrayAdapter; public ArrayAdapter<String> getArrayAdapter() { return arrayAdapter; } private DialogBuild dialogBuild = new DialogBuild(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnAlert = findViewById(R.id.btnAlert); listView = findViewById(R.id.listView); arrayAdapter = new ArrayAdapter<>(this,R.layout.support_simple_spinner_dropdown_item,dialogBuild.getList()); listView.setAdapter(arrayAdapter); btnAlert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { openDialog(); } }); } public void openDialog(){ dialogBuild.show(getSupportFragmentManager(),"Dialog"); } }
Activity_main.xml
- LinearLayout is the main container that holds all the views.
- Linear Layout aligns all children in one direction.
- The orientation tag sets the orientation of the view vertical or horizontal.
- Here, Button is our button view which will display the button on the activity.
- layout_gravity tag sets the position of the view in the parent view.
- gravity tag used to set the position of the child view.
- id tag gives the view a unique id.
- text tag will set the text of the button.
- ListView will display a list inside the parent activity.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" > <Button android:layout_gravity="center" android:gravity="center" android:id="@+id/btnAlert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:text="Add data"/> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listView" /> </LinearLayout>
Step 2:Create new class
Create a new class DialogBuild.java, Here, we will create a custom Dialog box.
- Extend DialogBuild.java class with AppCompactDialogFragment
- Override method onCreateDialog
- AlertDialog.Builder will create a builder with which we can build an Alert Dialog
- With the help of Builder, we can set title, message, and many other things
- LayoutInflater shows an XML file inside another view
- In inflater, we are passing the address of XML file “dialog_layout”
- setView will assign the custom view to the builder
- setNegativeButton method is used for creating the cancel button
- DialogInterface.OnClickListener method will execute when the cancel button is pressed.
- On the positive Button, we get the item name from edit text and then we pass it to the Array List by list.add method.
- we create a new adapter object with the reference of array adapter from MainActivity.java by a getter method
- notifyDataSetChange will notify our adapter that new data has been added to the list.
DialogBuild.java
package com.example.alertdialog; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatDialogFragment; import java.util.ArrayList; public class DialogBuild extends AppCompatDialogFragment { private EditText editName; public ArrayList<String> getList() { return list; } private ArrayList<String> list = new ArrayList<>(); @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.dialog_layout,null); editName =view.findViewById(R.id.editItem); builder.setView(view).setTitle("Add Items").setNegativeButton("Cancle", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).setPositiveButton("Add", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String name =editName.getText().toString(); list.add(name); MainActivity mainActivity = new MainActivity(); ArrayAdapter<String> stringArrayAdapter= mainActivity.getArrayAdapter(); stringArrayAdapter.notifyDataSetChanged(); } }); return builder.create(); } }
dialog_layout.xml
- Here our parent view is the relative layout.
- padding tag is used padding to view to all sides.
- EditText is our Editable Text view.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="15dp"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editItem" android:hint="Item"/> </RelativeLayout>
In this way, we have learned how to create an alert Dialog to add items to ListView and Display it to the home Activity.
Android practice tasks
https://codebun.com/login-and-registration-in-android-and-sqlite/
https://codebun.com/login-and-registration-in-android-using-firebase/
https://codebun.com/dynamic-and-static-dropdown-menuspinner-in-android/
https://codebun.com/crud-operation-using-sqlite-in-android/
https://codebun.com/crud-operation-in-android-using-firebase-database/
https://codebun.com/how-to-get-data-from-api-in-android/
https://codebun.com/how-to-create-custom-alert-dialog-in-android/
https://codebun.com/search-and-sort-records-in-android-with-recycler-view/
https://codebun.com/create-a-custom-notification-with-custom-message-in-android/