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() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "哟哟 确定", Toast.LENGTH_LONG).show();
}
});
dialog.setButton(AlertDialog.BUTTON_NEGATIVE, "取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "哟哟 取消", Toast.LENGTH_LONG).show();
}
});
dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "中立", new OnClickListener() {
@Override
public 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() {
@Override
public 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() {
@Override
public void onClick(DialogInterface dialog, int which) {
a = which;
Toast.makeText(MainActivity.this, "点了" + items[a], Toast.LENGTH_SHORT).show();
}
});
// 这儿设置的原因是因为只有这样 才能确定哪一项被点击了
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public 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() {
@Override
public 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 = "";
@Override
public 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() {
@Override
public 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() {
@Override
public 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() {
@Override
public 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();