【Android新手笔记一】编辑框edittext实现单选或多选等对话框

 
  

单选:dialog方式

edt_bloodtype.setOnClickListener(new View.OnClickListener() {              //edittext的点击事件
            @Override
            public void onClick(View v) {
                final String[] arr0 = new String[]{"A型", "B型", "AB型",            //要选择的选项列表
                        "O型", "不详"};
                Dialog alertdialog_blood = new AlertDialog.Builder(personalInfoActivity.this)  //personalInfoActivity为当前activity
                        .setTitle("血型").setSingleChoiceItems(arr0, selectedIndex, new       //单选。selectedIndex之前定义过,为点开时选中的那一项
                                DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        selectedIndex = which;                               //which为选中的选项,若是第一个,which=0
                                    }
                                }).setPositiveButton("确认", new DialogInterface.OnClickListener() { //点击确认
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                edt_bloodtype.setText(arr0[selectedIndex]);         //将数组中的对应项填入edittext中
                            }
                        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {  //取消按钮
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            }
                        }).create();
                alertdialog_blood.show();    
            }
        });

存在第一次点击edittext不弹出对话框,而进入编辑的问题。不知道怎么解决,直接在布局文件的edittext中加一行

android:focusableInTouchMode="false"

 
  

多选:

edt_symp.setOnClickListener(new View.OnClickListener() {              //点击事件
            @Override
            public void onClick(View v) {
                final String[] arr1 = new String[]{"无症状", "多饮", "多食", "多尿", "视力模糊",
                        "感染", "手脚麻木", "下肢浮肿", "体重明显下降"};                              //对话框中各选项
                final boolean[] arrSelected1 = new boolean[]{false, false, false, false, false,
                        false, false, false, false};                                              //点开对话框时各选项是否被选中
                Dialog alertdialog_symp = new AlertDialog.Builder(diabetes.this)
                        .setTitle("症状").setMultiChoiceItems(arr1, arrSelected1, new
                                DialogInterface.OnMultiChoiceClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which,
                                                        boolean isChecked) {
                                        arrSelected1[which] = isChecked;                   //每个选项是否被选中的结果
                                    }
                                }).setPositiveButton("确认", new DialogInterface.OnClickListener() {   //确认按钮
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                StringBuilder stringBuilder = new StringBuilder();
                                for (int i = 0; i < arrSelected1.length; i++) {
                                    if (arrSelected1[i] == true) {
                                        stringBuilder.append(arr1[i] + ",");           //选中的各选项用“,”相连
                                    }
                                }
                                edt_symp.setText(stringBuilder);                      //填入edittext中
                            }
                        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            }
                        }).create();
                alertdialog_symp.show();
            }
        });

 
  
 
 

你可能感兴趣的:(Android新手笔记)