在Android的警报对话框重置复选框 [英] Resetting checkboxes in Android's Alert Dialog

查看:94
本文介绍了在Android的警报对话框重置复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用AlertDialog与setMultiChoiceItems让用户选择哪个是工作的罚款多个项目。问题是,下一次出现的AlertDialog,它仍然有检查项目。我试图通过覆盖在prepareDialog取消选中他们,但它不工作。这是我的code:

I am using AlertDialog with setMultiChoiceItems to let the user select multiple items which is working fine. The problem is, next time the AlertDialog appears, it still has the items checked. I tried unchecking them by overriding onPrepareDialog but it is not working. This is my code:

@Override
    protected Dialog onCreateDialog( int id ) 
    {
        String[] PROJECTION=new String[] { Contacts._ID,
                Contacts.DISPLAY_NAME,
                    Phone.NUMBER};

        String number = null;


        String[] ARGS={String.valueOf(Phone.TYPE_MOBILE)};

            c=managedQuery(Phone.CONTENT_URI,
            PROJECTION, Phone.TYPE+"=?",
                ARGS, Contacts.DISPLAY_NAME);

            while (c.moveToNext()) {
                number = c.getString(1);
                names.add(number);
                numbers.add(c.getString(2));
            }
            CharSequence[] cs = names.toArray(new CharSequence[names.size()]);
            selection = new boolean[names.size()];
             return new AlertDialog.Builder(this)

             .setTitle("Pick Contacts")
             .setMultiChoiceItems(cs,
                     selection, new DialogInterface.OnMultiChoiceClickListener(){
                         public void onClick(DialogInterface dialog, int whichButton,
                                 boolean isChecked) {
                             if(isChecked){
                                 names1.add(names.get(whichButton));
                                 numbers1.add(numbers.get(whichButton));
                                 isChecked = false;

                             }else{
                                 names1.remove(names.get(whichButton));
                                 numbers1.remove(numbers.get(whichButton));
                             }

                         }
                     })
                     .setPositiveButton( "OK", new DialogButtonClickHandler() )
                     .setNegativeButton( "Cancel", new DialogButtonClickHandler1() )
            .create();

    }

 @Override
 protected void onPrepareDialog(int id, Dialog dialog) {

     final AlertDialog alert = (AlertDialog)dialog;
     final ListView list = alert.getListView();

     for(int i = 0 ; i < list.getCount(); i++){
         list.setItemChecked(i, false);  
     }

 }

我试图用list.setItemsChecked(我,真)和它的工作,但取消选中不工作检查所有项目。任何想法?

I tried checking all the items by using list.setItemsChecked(i,true) and its working but unchecking doesn't work. Any ideas?

推荐答案

要清除你只需要通过你的布尔数组选择,并设置所有条目以虚假的复选框。

To clear the checkboxes you simply have to go through your boolean array "selection" and set all entries to false.

这篇关于在Android的警报对话框重置复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆