在Android中覆盖setOnCheckedChangeListener

时间:2015-08-28 08:16:19

标签: android override

我有一组开关组件,大约30个。我想覆盖setOnCheckedChangeListener,以便我可以避免不必要的代码执行几乎相同的操作。

我知道, onClick 功能是可能的,因此使用多个按钮并更改覆盖功能中的逻辑会更好。

到目前为止我所拥有的是:

final Switch question1 = (Switch) findViewById(R.id.question1);
    question1.setText(R.string.no);
    question1.setChecked(false);
    question1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked) {
            if (isChecked) {
                question1.setText(R.string.yes);
            } else {
                question1.setText(R.string.no);
            }

            UpdateScores();
        }
    });

    final Switch question2 = (Switch) findViewById(R.id.question2);
    question2.setText(R.string.no);
    question2.setChecked(false);
    question2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked) {
            if (isChecked) {
                question2.setText(R.string.yes);
            } else {
                question2.setText(R.string.no);
            }

            UpdateScores();
        }
    });

可以看出,很多代码都被复制了,我不想这样做。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

OnCheckedChangeListner onchange = new OnCheckedChangeListener(){
     @Override
    public void onCheckedChanged(CompoundButton buttonView,
                                 boolean isChecked) {
        if (isChecked) {
            buttonView.setText(R.string.yes);
        } else {
            buttonView.setText(R.string.no);
        }

        UpdateScores();
    }
}

 question2.setOnCheckedChangeListener(onchange);
你想要吗?

答案 1 :(得分:0)

您可以为所有切换台创建一个侦听器。

CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                                         boolean isChecked) {
                if (isChecked) {
                    buttonView.setText(R.string.yes);
                } else {
                    buttonView.setText(R.string.no);
                }

                UpdateScores();
            }

然后将此监听器添加到您的Switchers:

question1.setOnCheckedChangeListener(listener);
question2.setOnCheckedChangeListener(listener);
....
question30.setOnCheckedChangeListener(listener);