android 对话框(二)Dialog列表

来源:互联网 发布:淘宝无法举证 编辑:程序博客网 时间:2024/05/16 10:24

可通过 AlertDialog API 提供三种列表:

  • 传统单选列表
  • 永久性单选列表(单选按钮)
  • 永久性多选列表(复选框)
通过:
setItems(int itemsId, DialogInterface.OnClickListener listener)
 第一个参数是一个数组
 第二个参数是对选择的监听
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.sigleDialog)
.setItems(R.array.city, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,which+"",Toast.LENGTH_LONG).show();
dialog.dismiss();
}
});
AlertDialog dialog=builder.create();
dialog.show();

setAdapter(ListAdapter adapter, DialogInterface.OnClickListener listener)这两个方法来设定列表
第一个对数是一个适配器
第二个参数是一个监听
默认情况下点击后对话框就消失了(不用调用dismiss方法)
如果不让点击后消失用下面的两个方法
setSingleChoiceItems()永久性单选列表(单选按钮)后面带有选择图标
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.sigleDialog)
.setSingleChoiceItems(R.array.city, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, which + "", Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog=builder.create();
dialog.show();
这个方法有三个参数:
第一个是一个数组,也右可以是指针(用于数据库的cusor)
第二个是默认选中的值 如果一个都不选择则为null
第三个是选择的监听
setMultiChoiceItems()永久性多选列表(复选框)后面带有选择图标(不调用Dismiss方法默认是不消失的)
final List mSelectedItems = new ArrayList(); //已选择的项
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.muiltDialog)
.setMultiChoiceItems(R.array.city, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
if (isChecked) {
//选中的值
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
//取消
mSelectedItems.remove(Integer.valueOf(which));
}
}
})
// Set the action buttons
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
 
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
 
}
});
 
builder.create().show();

这个方法有三个参数和上面的单选是一样的,唯一的区别是监听事件不一样:
第一个是一个数组,也右可以是指针(用于数据库的cusor)
第二个是默认选中的值 如果一个都不选择则为null
第三个是选择的监听
这三种类型的对话框都可以用DialogFragment去管理,只需要把上面的代码拷贝到

子Fragment的这个方法里就可以实现。
上图:customDialogFragment.gif



项目地址:https://github.com/wuhrGH/dialogBGTransparent

0 0
原创粉丝点击