[英]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.