ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在android中达到限制时禁用复选框?

2019-07-25 11:25:06  阅读:390  来源: 互联网

标签:android-checkbox android oncheckedchanged


我有15个CheckBox,当我检查超过5时我必须卡住用户.我使用方法OnCheckedChangeListener知道是否检查了一个项目,但我不知道在选择了5个项目后如何限制.

请参阅下面的代码:

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);
}

有人能以正确的方式指出我吗?

更新:我试过:

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个项目时,这有效,但是当我取消选择它们之后,我无法重新检查任何项目.我错过了什么?

解决方法:

你应该使用另一个变量来计算检查的复选框的数量

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--;
        }
    }; 

标签:android-checkbox,android,oncheckedchanged
来源: https://codeday.me/bug/20190725/1532406.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有