如何为多个复选框创建一个常见的onClickListener

时间:2015-03-26 10:03:55

标签: android checkbox

您好我是Android编程世界的新手,我对这个问题感到困惑,我想在视图中为所有多个checkBox设置一个常见的onClickListener或onCheckChangedListener。

在我经历过的大多数论坛中,他们建议对每个checkBox实现OnClickListener,我觉得这不是一个好主意,并觉得它是一个不必要的开销。 所以要求是我有几天相关的checkBoxes,每天代表星期日到星期六以及EveryDay。我需要取消选中Everyday进行检查时的所有日期,并在检查任何其他日期时取消选择EveryDay checkBox。

下面的代码我试过但控件永远不会到达onClickListener。

public class AddEditGroupActivity extends Activity 
        implements View.OnClickListener {

        public void onClick(View v) {
        if(v.getId() == R.id.addedit_restrict_byeveryday) {
            if(((CheckBox)v).isChecked()) {
                ((CheckBox) findViewById(R.id.addedit_restrict_bysunday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bymonday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bytuesday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bywednesday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bythursday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_byfriday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bysaturday)).setChecked(false);
            }
        } else if(v.getId() != R.id.addedit_restrict_byeveryday) {
            if(((CheckBox)v).isChecked()) {
                ((CheckBox) findViewById(R.id.addedit_restrict_byeveryday)).setChecked(false);
            }
        }
    }
}

请建议实现此任务的方法是什么。

2 个答案:

答案 0 :(得分:0)

我想你可能想要使用radioButton。

答案 1 :(得分:0)

        var file = fs.createReadStream(path.join(__dirname, '/public/index.html'));
        var options={
            fallback: config.deeplink_fallback,
            android_package_name:config.deeplink_package_name
        };      
        var detoken = new stream.Transform({ objectMode: true });   
        detoken._transform = function (chunk, encoding, done) {
            var data = chunk.toString()
            Object.keys(options).forEach(function (key) {
                data = data.replace('{{' + key + '}}', options[key])
            });
            this.push(data);
            done();     
        }
        var inline = inliner({ basedir: path.join(__dirname, '/public') }); 
        res.statusCode=200;
        res.setHeader('Content-Type', 'text/html; charset=utf-8');
        var newdt=file.pipe(detoken).pipe(inline);
        newdt.pipe(res);

您的布局文件

  public void onCheckboxClicked(View view) {

    boolean checked = ((CheckBox) view).isChecked();

    switch(view.getId()) {
        case R.id.sports:
                            if (checked)
                                uChoice.add("sport");
                            else
                                findAndRemove("sport");

                            break;

    }
}