проверьте, установлены ли все флажки. android - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь обработать событие, когда, если человек проверяет все флажки, должно произойти действие, которое заключается в том, чтобы сделать кнопку нажатой.

До сих пор я мог только проверить, установлен ли флажок или не отмечен, но не может найти способ установить счетчик для того количества кликов, которые были нажаты.

Флажки будут динамическими c, но в этом примере кода я просто использовал значения stati c.

Я попытался установить счетчик, и если я установил флажок, он должен увеличиться, но не смог найти правильный путь.

// Метод, который я вызываю

  ArrayList<String> arrayList= new ArrayList<>();
            arrayList.add("2Pac");
            arrayList.add("Biggie");
            arrayList.add("Nas");
            // Create Checkbox Dynamically
            for(int i=0;i<arrayList.size();i++) {

                CheckBox checkBox = new CheckBox(getContext());
                checkBox.setText(arrayList.get(i));
                checkBox.setTextSize(20);
                checkBox.setId(++checkBoxID);
                checkBox.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
                checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                   // int counter = -1;
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
                    {
                       // String msg = "You have " + (isChecked ? "checked" : "unchecked") + " this box it Checkbox.";
                        //Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
                        if(checkBox.isChecked())
                        {
                            //Toast.makeText(getActivity(), ""+ counter, Toast.LENGTH_SHORT).show();
                        }else
                            {
                          //      counter++;
                             //   Toast.makeText(getActivity(), ""+ counter, Toast.LENGTH_SHORT).show();
                            }
                    }
                });

                for(int j=0;j<allCheckBox.size();j++)
                {
                    if(allCheckBox.size()==arrayList.size())
                    {
                        //Toast.makeText(MainActivity.this, ""+ checkBox.getId(), Toast.LENGTH_SHORT).show();
                    }
                }
                // Add Checkbox to LinearLayout
                if (linearLayout != null) {
                    linearLayout.addView(checkBox);
                }

Я потратил целый день, пытаясь понять это !! любая помощь или идея действительно приветствуются.

1 Ответ

0 голосов
/ 05 марта 2020

Определите счетчик за пределами для l oop с начальным значением 0, и когда пользователь установит флажок, увеличьте его на единицу, а когда пользователь снимет флажок, уменьшите счетчик на единицу и в том же onCheckedChanged проверка прослушивателя на количество подобных флажков

 ArrayList<String> arrayList= new ArrayList<>();
 arrayList.add("2Pac");
 arrayList.add("Biggie");
 arrayList.add("Nas");

 int counter = 0; //all checkboxes unchecked
 // Create Checkbox Dynamically
 for(int i=0;i<arrayList.size();i++) {

     CheckBox checkBox = new CheckBox(getContext());
     checkBox.setText(arrayList.get(i));
     checkBox.setTextSize(20);
     checkBox.setId(++checkBoxID);
     checkBox.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

     checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
                    {

                        if(checkBox.isChecked())
                        {
                           counter++;
                           if (counter == arrayList.size()) {
                              //make your button clickable here
                           }
                        } else {
                           counter--;
                           //disable your button incase the user uncheck one of the checkboxes after all checkboxes were checked
                        } //end if
                    }
     });


     // Add Checkbox to LinearLayout
     if (linearLayout != null) {
         linearLayout.addView(checkBox);
     } //end if
 } //end for

Я написал код со своего телефона, поэтому не проверял код, надеюсь, он работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...