The following code shows how to Create AlertDialog from ArrayAdapter.
Layout activity_main.xml file
<?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="wrap_content" android:paddingLeft="10dp" android:paddingRight="10dp" android:minHeight="?android:attr/listPreferredItemHeight"> <TextView android:id="@+id/text_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:textAppearance="?android:attr/textAppearanceMedium"/> <TextView android:id="@+id/text_detail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:textAppearance="?android:attr/textAppearanceSmall"/> </RelativeLayout>
Main activity Java code
package com.java2s.myapplication3.app; /*from w w w . ja v a 2s . co m*/ import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity implements DialogInterface.OnClickListener, View.OnClickListener { private static final String[] ZONES = {"Pacific Time", "Mountain Time", "Central Time", "Eastern Time", "Atlantic Time"}; private static final String[] OFFSETS = {"GMT-08:00", "GMT-07:00", "GMT-06:00", "GMT-05:00", "GMT-04:00"}; Button mButton; AlertDialog mActions; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("Activity"); mButton = new Button(this); mButton.setText("Click for Time Zones"); mButton.setOnClickListener(this); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_main) { @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; if (row == null) { row = getLayoutInflater().inflate(R.layout.activity_main, parent, false); } TextView name = (TextView) row.findViewById(R.id.text_name); TextView detail = (TextView) row.findViewById(R.id.text_detail); name.setText(ZONES[position]); detail.setText(OFFSETS[position]); return row; } @Override public int getCount() { return ZONES.length; } }; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Select Time Zone"); builder.setAdapter(adapter, this); builder.setNegativeButton("Cancel", null); mActions = builder.create(); setContentView(mButton); } @Override public void onClick(DialogInterface dialog, int which) { String selected = ZONES[which]; mButton.setText(selected); } @Override public void onClick(View v) { mActions.show(); } }