【问题标题】:How to select multiple Checkbox and create an Array with the values in android如何选择多个复选框并使用android中的值创建一个数组
【发布时间】:2015-10-16 00:33:51
【问题描述】:

我在我的Fragment 中添加了 9 个CheckBox,正在接受检查 根据 JSON 的响应。如果用户想更新他/她 个人资料,他/她可以check/uncheck其中任何一个。现在我必须确认 其中有多少是checked 并创建一个Array 作为 parameter 据此。我没有为此使用任何adapter。 请让知道如何设置条件以获取 only 的值 勾选复选框

我正在尝试这样做

cb_prfl_setng_general=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_general);
    cb_prfl_setng_economics = (CheckBox)rootView.findViewById(R.id.cb_prfl_setng_economics);
    cb_prfl_setng_business=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_business);
    cb_prfl_setng_social=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_social);
    cb_prfl_setng_politics=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_politics);
    cb_prfl_setng_entertainmnt=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_entertainmnt);
    cb_prfl_setng_technology=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_technology);
    cb_prfl_setng_spritual=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_spritual);
    cb_prfl_setng_sports=(CheckBox)rootView.findViewById(R.id.cb_prfl_setng_sports);



     if(cb_prfl_setng_general.isChecked()){

                String[] Interest = {"catagory_id=1"};

            }else if(cb_prfl_setng_economics.isChecked()){

                String[] Interest = {"catagory_id=1","catagory_id=2"};

            }else if(cb_prfl_setng_general.isChecked()){

                String[] Interest = {"catagory_id=1","catagory_id=2","catagory_id=3"};

            }else if(cb_prfl_setng_entertainmnt.isChecked()){

                String[] Interest = {"catagory_id=1","catagory_id=2","catagory_id=3","catagory_id=4"};
            }

但我认为这不是获得确切值的正确方法。

【问题讨论】:

    标签: android arrays checkbox


    【解决方案1】:

    字符串 WeekDays=""; List DayList = new ArrayList();

    if (cbSunday.isChecked()) {
                    DayList.add(String.valueOf(cbSunday.getText()));
                }
                if (cbMonday.isChecked()) {
                    DayList.add(String.valueOf(cbMonday.getText()));
                }
                if (cbTuesday.isChecked()) {
                    DayList.add(String.valueOf(cbTuesday.getText()));
                }
                if (cbWednesday.isChecked()) {
                    DayList.add(String.valueOf(cbWednesday.getText()));
                }
                if (cbThursday.isChecked()) {
                    DayList.add(String.valueOf(cbThursday.getText()));
                }
                if (cbFriday.isChecked()) {
                    DayList.add(String.valueOf(cbFriday.getText()));
                }
                if (cbSaturday.isChecked()) {
                    DayList.add(String.valueOf(cbSaturday.getText()));
                }
    
    
                String[] Days = DayList.toArray(new String[DayList.size()]);
    
                WeekDays="";
    
                for (String str : Days) {
                    if(WeekDays.equals(""))
                    {
                        WeekDays=WeekDays+str;
                    }
                    else {
    
                        WeekDays = WeekDays + "," + str;
                    }
    
                    WeekDays=WeekDays;                   
                     Log.d("LogDays",WeekDays);
                     
                }
    

    【讨论】:

      【解决方案2】:

      您需要单独测试每个复选框并累积类别ID:

          List<String> interestList = new ArrayList<String>();
      
          // for each checkbox checked, accumulate a category id in the list
          if (cb_prfl_setng_general.isChecked()) {
              interestList.add("catagory_id=1");
          }
      
          if (cb_prfl_setng_economics.isChecked()) {
              interestList.add("catagory_id=2");
          }
      
          if (cb_prfl_setng_general.isChecked()) {
              interestList.add("catagory_id=3");
          }
      
          if (cb_prfl_setng_entertainmnt.isChecked()) {
              interestList.add("catagory_id=4");
          }
      
          .
          .
          .
      
          // convert the list into an array
          String[] interest = interestList.toArray(new String[interestList.size()]);
      
          System.out.println("interest");
          for (String str : interest) {
              System.out.println(str);
          }
      

      【讨论】:

      • 不,我不想知道当用户选中/取消选中复选框时,我只想知道页面提交点击时的最终值。像:'Savebutton.setonclicklistener(this)'。在这一点上,我必须得到复选框被选中/取消选中的值,并创建一个具有相应值的字符串数组。
      • 好的,我明白你在问什么。我更新了我的答案。
      • 感谢 Kris 的回答,但是当我尝试打印该值时 kris "System.out.println("interest"+interest);"我在 Log "interest[Ljava.lang.String;@417232e0" 中得到这个打印。没事吧???
      • 数组没有将打印整个数组的toString()。请参阅我的更新答案。
      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2014-09-27
      相关资源
      最近更新 更多