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

<pre name="code" class="plain">
 

单选: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中加一行

<pre name="code" class="html">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();
            }
        });

 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值