Как установить все флажки, нажимая основной флажок в android? - PullRequest
1 голос
/ 19 февраля 2020

Мне нужно установить основной флажок, все остальные частичные флажки также выбраны

Мое требование: у меня есть флажок selectAll и некоторые другие флажки, нажав этот флажок selectAll, все другие флажки должны быть выбраны. И при щелчке частичного флажка выбор флажка selectAll должен исчезнуть.

 selectAllCheckbox.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                CheckBox cb = (CheckBox) view;
                isPartial = true;
                splitItemAdapter.selectAllItem(cb.isChecked());
                if (isFromCashPayment) {
                    if (cb.isChecked()) {
                      selectAllCheckbox.setChecked(true);
                      isitemChecked = true;




                    } else {

                        selectAllCheckbox.setChecked(false);

                        isitemChecked = false;



                    }
                }
            }
        });

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

Вы можете попробовать этот код:

OnCreate

        parent = findViewById(R.id.parent_checkbox);
        child1 = findViewById(R.id.child_checkbox_1);
        child2 = findViewById(R.id.child_checkbox_2);

        parent.setOnCheckedChangeListener(this);
        child1.setOnCheckedChangeListener(this);
        child2.setOnCheckedChangeListener(this);

OnCheckChanged

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

метод checkCheckBox

public void checkCheckBox(View view){
     if (parent.isChecked() && view.getId() == R.id.parent_checkbox){
         child1.setChecked(true);
         child2.setChecked(true);
     }
     else if (!parent.isChecked() && view.getId() == R.id.parent_checkbox){
         if (child1.isChecked() && child2.isChecked()){
             child1.setChecked(false);
             child2.setChecked(false);
         }
     }
     else if (!parent.isChecked()){
         if (child1.isChecked() && child2.isChecked()){
             parent.setChecked(true);
         }
     }
     else if (parent.isChecked() && !child1.isChecked() || !child2.isChecked()){
         parent.setChecked(false);
     }
    }
1 голос
/ 19 февраля 2020

Вы можете использовать этот способ. Во-первых, все флажки должны быть в одном макете. И затем вы используете этот блок кода.

макет. xml

...
 <CheckBox android:id="@+id/allCheckbox" />
 <LinearLayout android:id="@+id/checkboxLayouts"...>

               <CheckBox  android:layout_width="wrap_content"
                         android:layout_height="wrap_content"/>

               <CheckBox  android:layout_width="wrap_content"
                         android:layout_height="wrap_content"/>

               <CheckBox android:layout_width="wrap_content"
                         android:layout_height="wrap_content"/>

               <CheckBox  android:layout_width="wrap_content"
                         android:layout_height="wrap_content"/>
</LinearLayout>
...

Код

LinearLayout checkboxLayout = findViewById(R.id.checkboxLayouts);

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
       for(int i=0 ; i < checkboxLayout.getChildCount(); i++) {
          if(checkboxLayout.getChildAt(i) instanceof CheckBox) {
             ((CheckBox) checkboxLayout.getChildAt(i)).setChecked(isChecked);
          }
       }
 }
});

Примечание: я не могу проверить код. Извините за синтаксическую ошибку.

0 голосов
/ 19 февраля 2020

Оформить заказ c с помощью этой демонстрации kotlin код ...

        checkBox1.setOnClickListener {
            if (checkBox2.isChecked) {
                selectAllCheckbox.isChecked = true
            }

            if (!checkBox2.isChecked || !checkBox1.isChecked) {
                selectAllCheckbox.isChecked = false
            }
        }
        checkBox2.setOnClickListener {
            if (checkBox1.isChecked) {
                selectAllCheckbox.isChecked = true
            }
            if (!checkBox1.isChecked || !checkBox2.isChecked) {
                selectAllCheckbox.isChecked = false
            }
        }
        selectAllCheckbox.setOnClickListener {
            if (selectAllCheckbox.isChecked) {
                checkBox1.isChecked = true
                checkBox2.isChecked = true
            }
            if (!selectAllCheckbox.isChecked) {
                checkBox1.isChecked = false
                checkBox2.isChecked = false
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...