簡體   English   中英

選中多個復選框后,如何禁用復選框?

[英]How do I disable checkboxes after a number of checkbox selected?

我有10個復選框,在最多選擇6個復選框后,我想禁用其余的復選框。

如何使用OnCheckChangedListener解決問題。

如果我編寫如下代碼,則需要重復10次

checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isChecked && numberOfCheckboxesChecked >= 6) {
        checkbox1.setChecked(false);
    } else {
    }
}};

如何減少冗余代碼?

您可以創建一個命名類而不是一個匿名類:

checkbox1.setOnCheckedChangeListener(new MyCheckboxChangeListener());
checkbox2.setOnCheckedChangeListener(new MyCheckboxChangeListener());
...

private static class MyCheckboxChangeListener implements OnCheckedChangeListener {

    private static int numberOfCheckboxesChecked;

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            if (numberOfCheckboxesChecked >= 6) {
                buttonView.setChecked(false);
            } else {
                numberOfCheckboxesChecked++;
            }
        } else {
            numberOfCheckboxesChecked--;            
        }
    }
}

或者,您可以在Activity中實現該接口:

public class MainActivity extends AppCompatActivity implements OnCheckedChangeListener {

    ...
    private int numberOfCheckboxesChecked;
    ...

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        checkbox1.setOnCheckedChangeListener(this);
        checkbox2.setOnCheckedChangeListener(this);
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            if (numberOfCheckboxesChecked >= 6) {
                buttonView.setChecked(false);
            } else {
                numberOfCheckboxesChecked++;
            }
        } else {
            numberOfCheckboxesChecked--;            
        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM