gpt4 book ai didi

android - 在 Android 中覆盖 setOnCheckedChangeListener

转载 作者:太空狗 更新时间:2023-10-29 14:55:04 31 4
gpt4 key购买 nike

我有一组开关组件,大约 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();
}
});

可以看出,大部分代码都是重复的,我不希望这样。有什么办法可以达到这个目的吗?

最佳答案

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

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

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

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

关于android - 在 Android 中覆盖 setOnCheckedChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32266389/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com