8种android 对话框(Dialog)使用方法详解

2019-12-10 18:51:14王振洲

2.2 列表Dialog(图3)

private void showListDialog() {
  final String[] items = { "我是1","我是2","我是3","我是4" };
  AlertDialog.Builder listDialog = 
    new AlertDialog.Builder(MainActivity.this);
  listDialog.setTitle("我是一个列表Dialog");
  listDialog.setItems(items, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      // which 下标从0开始
      // ...To-do
      Toast.makeText(MainActivity.this, 
        "你点击了" + items[which], 
        Toast.LENGTH_SHORT).show();
    }
  });
  listDialog.show();
}

2.3 单选Dialog(图4)

int yourChoice;
private void showSingleChoiceDialog(){
  final String[] items = { "我是1","我是2","我是3","我是4" };
  yourChoice = -1;
  AlertDialog.Builder singleChoiceDialog = 
    new AlertDialog.Builder(MainActivity.this);
  singleChoiceDialog.setTitle("我是一个单选Dialog");
  // 第二个参数是默认选项,此处设置为0
  singleChoiceDialog.setSingleChoiceItems(items, 0, 
    new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      yourChoice = which;
    }
  });
  singleChoiceDialog.setPositiveButton("确定", 
    new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      if (yourChoice != -1) {
        Toast.makeText(MainActivity.this, 
        "你选择了" + items[yourChoice], 
        Toast.LENGTH_SHORT).show();
      }
    }
  });
  singleChoiceDialog.show();
}

2.4 多选Dialog(图5)

ArrayList<Integer> yourChoices = new ArrayList<>();
private void showMultiChoiceDialog() {
  final String[] items = { "我是1","我是2","我是3","我是4" };
  // 设置默认选中的选项,全为false默认均未选中
  final boolean initChoiceSets[]={false,false,false,false};
  yourChoices.clear();
  AlertDialog.Builder multiChoiceDialog = 
    new AlertDialog.Builder(MainActivity.this);
  multiChoiceDialog.setTitle("我是一个多选Dialog");
  multiChoiceDialog.setMultiChoiceItems(items, initChoiceSets,
    new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which,
      boolean isChecked) {
      if (isChecked) {
        yourChoices.add(which);
      } else {
        yourChoices.remove(which);
      }
    }
  });
  multiChoiceDialog.setPositiveButton("确定", 
    new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      int size = yourChoices.size();
      String str = "";
      for (int i = 0; i < size; i++) {
        str += items[yourChoices.get(i)] + " ";
      }
      Toast.makeText(MainActivity.this, 
        "你选中了" + str, 
        Toast.LENGTH_SHORT).show();
    }
  });
  multiChoiceDialog.show();
}