1. 普通的AlertDialog2. 列表对话框分为 简单列表对话框,单选列表对话框,多选列表对话框,如图所示:
3. 进度条对话框4. 自定义对话框5. 使用Activity 托管对话框
关于 简单列表对话框:通过AlertDialog.Builder类的setItems方法创建,该方法有2种定义:
① public Builder setItems(int itemsId, final OnClickListener listener) // itemsId 表示字符串数组的资源ID, 该资源指定的数组会显示在列表中
② public Builder setItems(CharSequence[] items,final OnClickListener listener) // items 表示用于显示在列表中的字符串数组
显示简单列表对话框关键代码,通过一个定时器实现一定时间后自动关闭对话框的功能,如下:
private void showListDialog()
{
new AlertDialog.Builder(this).setTitle("选择省份").setItems(provinces,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
final AlertDialog ad = new AlertDialog.Builder(
Main.this).setMessage(
"您已经选择了: " + which + ":" + provinces[which]).show();
// 设置一个定时器,3秒后调用run方法
Handler hander = new Handler();
hander.postDelayed(new Runnable()
{
@Override
public void run()
{
ad.dismiss();
}
}, 3000);
}
}).show();
}
AlertDialog.Builder 类的 setSingleChoiceItems 方法可以创建带单选按钮的列表对话框,setSingleChoiceItems方法有4种重载形式
① public Builder setSingleChoiceItems(int itemsId,int checkedItem,final OnClickListener listener) //itemsId 表示数组资源Id,从资源文件中装载数据
② public Builder setSingleChoiceItems(Cursor cursor, int checkedItem,String labelColumn, final OnClickListener listener) //从数据集中装载数据
③ public Builder setSingleChoiceItems(CharSequence[] items, int checkedItem, final OnClickListener listener) //从字符串数组中装载数据
④ public Builder setSingleChoiceItems(ListAdapter adapter,int checkedItem,final OnClickListener listener) //从ListAdapter 对象中装载数据这里listener 表示单击某个列表项时被触发的监听事件; 如果数据源是数据集, 数据集 中的某一列会作为列表对话框的数据加载到列表框中,labelColumn 表示该列的名称
AlertDialog,Builder 类的setMultiChoiceItems 方法可以创建带复选框的列表对话框,setMultiChoiceItems有以下3种重载形式
① public Builder setMultiChoiceItems(int itemsId, boolean[] checkedItems,final OnClickChoiceClickListener listener)
② public Builder setMultiChoiceItems(Cursor cursor, String isCheckedColumn,String labelColumn,final OnMultiChoiceClickListener listener)
③ public Builder setMultiChoiceItems(CharSequence[] items,boolean[] checkedItems, final OnMultiChoiceClickListener listener)这里isCheckedColumn确定列表项是否被选中,1 表示选中,0未选中
具体代码参见 ch04_listdialog工程,已对源码作了改进,选择后加了定时器,3秒后将对话框结果将消失