ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – Android:Dialog Builder multipleselection设置数组

2019-07-29 09:11:22  阅读:199  来源: 互联网

标签:android java android-dialog


我正在尝试按照Android文档关于多个选择对话框.我有一个问题,我认为这是我正在尝试加载的数组类型.

public void addCondition(View view){

         ArrayList<String> mHelperNames= new ArrayList<String>();
           mHelperNames.add("Test Item");
           mHelperNames.add("Test Item");
           mHelperNames.add("Test Item");


           mSelectedItems = new ArrayList();  

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("My Title")
                   .setMultiChoiceItems(mHelperNames, 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));
                           }
                       }
                   })

                   .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialog, int id) {
                            //Create onlcick method
                       }
                   })
                   .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialog, int id) {
                            //Create onlcick method
                       }
                   });
            builder.show();

    }

上面是我的代码,但它是eclipse中的红线城市:

       

在文档中,mSelectedItems永远不会被声明,我不太确定我将其声明为什么.

.SetMultipleChoiceItems上的错误是:

AlertDialog.Builder类型中的方法setMultiChoiceItems(int,boolean [],DialogInterface.OnMultiChoiceClickListener)不适用于参数(ArrayList,null,new DialogInterface.OnMultiChoiceClickListener(){})

但是,如果我从字符串中更改它,如何在其中显示文本项?任何帮助将非常感激.

汤姆

解决方法:

您必须为setMultiChoiceItems方法提供CharSequence [],而不是ArrayList.

您可以像这样创建mHelperNames:

CharSequence[] mHelperNames = new CharSequence[] { "test item 1", "test item 2" };

并且不要忘记声明mSelectedItems:

final List<Integer> mSelectedItems = new ArrayList<Integer>(); 

(它必须是最终的,因为你从内部类访问它)

如果需要稍后修改,也可以将mHelperNames保留为ArrayList.然后,在调用setMultiChoiceItems时需要将其转换为数组:

    List<CharSequence> mHelperNames = new ArrayList<CharSequence>();
    mHelperNames.add("Test Item 1");
    mHelperNames.add("Test Item 2");

    final List<Integer> mSelectedItems = new ArrayList<Integer>();

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("My Title")
            .setMultiChoiceItems(mHelperNames.toArray(new CharSequence[mHelperNames.size()]), 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));
                            }
                        }
                    })

标签:android,java,android-dialog
来源: https://codeday.me/bug/20190729/1570261.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有