AlertDialog类的功能十分强大,可以生成带按钮的提示对话框,还可以生成带列表的列表对话框。
1、带确定,中立和取消三个按钮的提示对话框。按钮根据需要添加
2、带列表的对话框
3、带多个单选列表项和n个按钮的列表对话框
4、带多个多选列表项和n个按钮的列表对话框
AlertDialog类
构造方法:该类没有构造方法,需要用AlertDialog.Builder这个类来创建。
常用方法:
dialog.setTitle("标题"):用于给对话框设置标题
dialog.setMessage("猜猜猜"):用于提示对话框要显示的内容
dialog.setIcon(R.drawable.ic_launcher):为对话框设置图片
dialog.setButton(AlertDialog.BUTTON_POSITIVE, "确定", new OnClickListener() {}):
设置按钮,最多只能有三个按钮
dialog.show():让对话框显示出来
AlertDialog.Builder类:
构造方法:
new AlertDialog.Builder(context):就是构造方法
常用方法:
builder.setTitle("标题"):用于给对话框设置标题
builder.setMessage("猜猜猜"):用于提示对话框要显示的内容
builder.setIcon(R.drawable.ic_launcher):为对话框设置图片
builder.setNegativeButton(text, listener):为对话框设置确定按钮,其他两个一样的
builder.setItems(items, new DialogInterface.OnClickListener() {}):用于给对话框添加列表项
builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {}):用于给对话框添加单选列表项,一般添加一个按钮
builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {}):用于给对话框添加多选列表项,一般添加一个按钮
builder.setAdapter(adapter1, new DialogInterface.OnClickListener() {}):可以用在这儿的是ListAdapter的子类
builder.setView(v):用于设置自定义的view
builder.show():使对话框显示
builder.create():生成AlertDialog对象
代码:
①三个按钮,继续添加覆盖之前的
builder = new AlertDialog.Builder(this);AlertDialog dialog = builder.create();dialog.setTitle("按钮");dialog.setMessage("猜猜猜");dialog.setIcon(R.drawable.ic_launcher);dialog.setButton(AlertDialog.BUTTON_POSITIVE, "确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "哟哟 确定", Toast.LENGTH_LONG).show();}});dialog.setButton(AlertDialog.BUTTON_NEGATIVE, "取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "哟哟 取消", Toast.LENGTH_LONG).show();}});dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "中立", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "哟哟 中立", Toast.LENGTH_LONG).show(); }});dialog.show();
带列表的对话框:
builder = new AlertDialog.Builder(this);builder.setItems(items, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();}});builder.show();
单选的对话框:
builder = new AlertDialog.Builder(this);builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {a = which;Toast.makeText(MainActivity.this, "点了" + items[a], Toast.LENGTH_SHORT).show();}});// 这儿设置的原因是因为只有这样 才能确定哪一项被点击了builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "点了" + items[a], Toast.LENGTH_SHORT).show();}});builder.show();
多选的对话框:
builder = new AlertDialog.Builder(this);builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();checkedItems[which] = isChecked;}});builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {String choiceStr = "";@Overridepublic void onClick(DialogInterface dialog, int which) {for (int i = 0; i < items.length; i++) {if (checkedItems[i]) {choiceStr += items[i];}}Toast.makeText(getApplicationContext(), choiceStr, Toast.LENGTH_LONG).show();}});builder.show();
使用ArrayAdapter添加数据
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);builder = new AlertDialog.Builder(this);builder.setAdapter(adapter1, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();}});builder.show();
使用SimpleAdapter添加的数据:
SimpleAdapter adapter2 = new SimpleAdapter(this, data, R.layout.dialog_item, new String[] { "Img", "name" },new int[] { R.id.iv_img, R.id.tv_name });builder = new AlertDialog.Builder(this);builder.setAdapter(adapter2, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();}});builder.show();
自定义布局:
builder = new AlertDialog.Builder(this);View v = getLayoutInflater().inflate(R.layout.login, null);builder.setView(v);et_username = (EditText) v.findViewById(R.id.et_username);et_password = (EditText) v.findViewById(R.id.et_password);builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String username = et_username.getText().toString();String password = et_password.getText().toString();Toast.makeText(MainActivity.this, username + " " + password, Toast.LENGTH_SHORT).show();}});builder.show();
自定义布局ListView:
builder = new AlertDialog.Builder(this);View v = getLayoutInflater().inflate(R.layout.alertdialog_listview, null);ListView lv_1 = (ListView) v.findViewById(R.id.lv_1);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);lv_1.setAdapter(adapter);builder.setView(v).setTitle("弹出框").setIcon(R.drawable.ic_launcher).show();
本文详细介绍了AlertDialog类及其Builder的使用方法,包括如何创建带有不同按钮的提示对话框、列表对话框以及如何添加单选、多选列表项,并通过代码实例展示了如何自定义布局和使用适配器添加数据。
1699

被折叠的 条评论
为什么被折叠?



