我有15 复选框
,我一定要坚持用户,当他检查5个以上。我使用的方法 OnCheckedChangeListener
要知道,如果一个项目被选中,但我不知道如何选择后5项限制。
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.
请参阅我下面的code:
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?
更新:我想:
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--;
}
}
};
作品完美,但我觉得缺了点什么。当我点击5项工作的,但是当我取消选择他们后,我不能重新检查的项目。我缺少的是什么?
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?
你应该使用其它变量计算checkboxs该检查的数量
you should use a other variable for counting number of checkboxs that checked
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--;
}
};
上一篇:ReSharper的转换自动财产归赵财产、ReSharper
下一篇:为什么Android的服务崩溃,并抛出NullPointerException异常?抛出、异常、Android、NullPointerException