How to display a listView in an android alert dialog?

AndroidMobile DevelopmentApps/Applications

This example demonstrates how do I display a listView in an android aler dialog.

Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.

Step 2 − Add the following code to res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
   <Button
      android:id="@+id/btnClick"
      android:textSize="12sp"
      android:textStyle="bold"
      android:onClick="openDialog"
      android:text="Click here to get ListView in Alert Dialog"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true" />
</RelativeLayout>

Step 3 − Add the following code to src/MainActivity.java

import android.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
   String[] names = {"India", "Brazil", "Argentina",
      "Portugal", "France", "England", "Italy"};
   ArrayAdapter<String> adapter;
   ListView listView;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }
   public void openDialog(View v){
      AlertDialog.Builder alertDialog = new
      AlertDialog.Builder(this);
      View rowList = getLayoutInflater().inflate(R.layout.row, null);
      listView = rowList.findViewById(R.id.listView);
      adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, names);
      listView.setAdapter(adapter);
      adapter.notifyDataSetChanged();
      alertDialog.setView(rowList);
      AlertDialog dialog = alertDialog.create();
      dialog.show();
   }
}

Step 4 − Create a layout resource file(row.xml) and add the following code −

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="ALL COUNTRIES"
      android:layout_alignParentBottom="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentEnd="true" />
   <ListView
      android:id="@+id/listView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_alignParentStart="true"
      android:layout_above="@id/button">
   </ListView>
</RelativeLayout>

Step 5 − Add the following code to androidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
   package="app.com.sample">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action
               android:name="android.intent.action.MAIN" />
            <category
               android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

Let's try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from android studio, open one of your project's activity files and click Run Play Iconicon from the toolbar. Select your mobile device as an option and then check your mobile device which will display your default screen −

raja
Published on 21-Aug-2019 11:48:26
Advertisements