有三种情形,分别是:普通列表对话框、单选列表对话框、多选列表对话框。代码如下:
 
package me.chendd.dialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;

public class ListDialogActivity extends Activity implements OnClickListener {
  /** Called when the activity is first created. */
  private String[] provinces = new String[] { "福建", "广东", "浙江", "江苏", "上海",
      "北京" };
  private ButtonOnClick buttonOnClick = new ButtonOnClick(0);
  private ListView lv = null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btnList = (Button) findViewById(R.id.list);
    Button btnSingleChoice = (Button) findViewById(R.id.singlechoice);
    Button btnMultiChoice = (Button) findViewById(R.id.multichoice);
    btnList.setOnClickListener(this);
    btnSingleChoice.setOnClickListener(this);
    btnMultiChoice.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.list: {
      showList();
      break;
    }
    case R.id.singlechoice: {
      showSingleChoice();
      break;
    }
    case R.id.multichoice: {
      showMultiChoice();
      break;
    }
    }
  }

  private void showMultiChoice() {
    // TODO Auto-generated method stub
    AlertDialog ad = new AlertDialog.Builder(this)
        .setIcon(R.drawable.ic_launcher)
        .setTitle("选择省份")
        .setMultiChoiceItems(
            provinces,
            new boolean[] { false, true, false, true, false, false },
            new DialogInterface.OnMultiChoiceClickListener() {

              @Override
              public void onClick(DialogInterface dialog,
                  int which, boolean isChecked) {
                // TODO Auto-generated method stub

              }
            })
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {

          @Override
          public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            int count = lv.getCount();
            String s = "您选择了:";
            for (int i = 0; i < provinces.length; i++) {
              if (lv.getCheckedItemPositions().get(i))
                s += i + ":" + lv.getAdapter().getItem(i) + " ";
            }
            if (lv.getCheckedItemPositions().size() > 0) {
              new AlertDialog.Builder(ListDialogActivity.this)
                  .setMessage(s).show();
            } else {
              new AlertDialog.Builder(ListDialogActivity.this)
                  .setMessage("您未选择任何省份").show();
            }
          }
        }).setNegativeButton("取消", null).create();
    lv = ad.getListView();
    ad.show();
  }

  private void showSingleChoice() {
    // TODO Auto-generated method stub
    new AlertDialog.Builder(this).setTitle("选择省份")
        .setSingleChoiceItems(provinces, 0, buttonOnClick)
        .setPositiveButton("确定", buttonOnClick)
        .setNegativeButton("取消", buttonOnClick).show();
  }

  private void showList() {
    // TODO Auto-generated method stub
    new AlertDialog.Builder(this).setTitle("选择省份")
        .setItems(provinces, new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            final AlertDialog ad = new AlertDialog.Builder(
                ListDialogActivity.this).setMessage(
                "您已选择了:" + which + ":" + provinces[which])
                .show();
            Handler hander = new Handler();
            hander.postDelayed(new Runnable() {

              @Override
              public void run() {
                // TODO Auto-generated method stub
                ad.dismiss();
              }
            }, 5000);
          }
        }).show();
  }

  private class ButtonOnClick implements DialogInterface.OnClickListener {
    private int index;

    public ButtonOnClick(int index) {
      this.index = index;
    }

    public void onClick(DialogInterface dialog, int which) {
      // TODO Auto-generated method stub
      if (which >= 0) {
        index = which;
      } else {
        if (which == DialogInterface.BUTTON_POSITIVE) {
          new AlertDialog.Builder(ListDialogActivity.this)
              .setMessage(
                  "您已选择了:" + index + ":" + provinces[index])
              .show();
        } else if (which == DialogInterface.BUTTON_NEGATIVE) {
          new AlertDialog.Builder(ListDialogActivity.this)
              .setMessage("您什么都未选择。").show();
        }
      }
    }

  }
}
 
运行结果:
 
Android入门:AlterDialog之列表对话框_三
 
单击列表对话框:
 
 
Android入门:AlterDialog之列表对话框_三_02
 
选择广东:
 
Android入门:AlterDialog之列表对话框_三_03
 
单击单选对话框:
 
 
Android入门:AlterDialog之列表对话框_多_04
 
选择江苏
 
 
Android入门:AlterDialog之列表对话框_三_05
 
单击多选对话框:
 
 
Android入门:AlterDialog之列表对话框_三_06
 
选择。。。
 
 
Android入门:AlterDialog之列表对话框_Android_07
 
 
注意:选项标号从0开始。