How to disable checkbox when a limit is reached in android?
android, android-checkbox, oncheckedchanged
Solution
you should use a other variable for counting number of checkboxs that checked
final int count=0;
OnCheckedChangeListener checker = new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton cb, boolean b) {
if(count == maxLimit && b){
cb.setChecked(false);
Toast.makeText(getApplicationContext(),
"Limit reached!!!", Toast.LENGTH_SHORT).show();
}else if(b){
count++;
CharSequence myCheck = tagsCheck[i].getText();
Toast.makeText(getApplicationContext(),
myCheck + " checked!",
Toast.LENGTH_SHORT)
.show();
}else if(!b){
count--;
}
};
Problem
I have 15 `CheckBox` and I must to stuck user when he checks more than 5. I use the method `OnCheckedChangeListener` to know if an item is checked, but I don't know how to limit after 5 items selected. See my code below: ``` int lengthBox = 15; int lenghtCount = 0; // inside onCreate method final CheckBox[] checkbox = new CheckBox[lengthBox]; OnCheckedChangeListener checker = new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton cb, boolean b) { // How can I improve this condition? if(checkbox[0].isChecked() || checkbox[1].isChecked() || checkbox[2].isChecked() || checkbox[3].isChecked() || checkbox[4].isChecked() || checkbox[5].isChecked() || checkbox[6].isChecked() || checkbox[7].isChecked() || checkbox[8].isChecked() || checkbox[9].isChecked() || checkbox[10].isChecked() || checkbox[11].isChecked() || checkbox[12].isChecked() || checkbox[13].isChecked() || checkbox[14].isChecked()) { if(lenghtCount < 5){ lenghtCount++; }else{ Toast.makeText(MyActivity.this, "Limit reached!!!", Toast.LENGTH_SHORT).show(); } } } }; for(int i = 0; i < lengthBox; i++) { int id = getResources().getIdentifier("checkbox_"+i, "id", getPackageName()); checkbox[i] = (CheckBox) findViewById(id) checkbox[i].setOnCheckedChangeListener(checker); } ``` Can someone point me in the right way, please? UPDATE: I tried: ``` OnCheckedChangeListener checker = new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton cb, boolean b) { if(lenghtCount == 5){ cb.setChecked(false); }else if(b){ lenghtCount++; }else if(!b){ lenghtCount--; } } }; ``` Works perfectly but I think something is missing. When I click 5 items this works, but after when I unselect them, I can't recheck any item. What I'm missing?