如何在 Android Studio 中有效地将 属性 更改为多个 views/buttons?
How do I efficiently change a property to multiple views/buttons in Android Studio?
我正开始 Android 开发,但我一直找不到答案,因为我可能不知道如何正确措辞。我想要做的是在我点击任何按钮后将所有按钮设置为不可见。最简单的方法是:
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
Button button4 = findViewById(R.id.button4);
setInvisible(button1);
setInvisible(button2);
setInvisible(button3);
setInvisible(button4);
不过我觉得这违背了编程的DRY原则。我的意思是如果有 100 个按钮怎么办?
经过一番思考,我想我可以使用一个循环,让我成为每个按钮编号的占位符。这样它就会遍历每一个。但是我不确定使用什么方法。
您可以按照以下方式进行:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private int[] btnIds = new int[]{R.id.button1, R.id.button2, R.id.button3, R.id.button4};
private List<Button> buttonList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_group);
for(int i = 0; i < btn.length; i++){
buttonList.add(findViewById(btnIds[i]));
buttonList.get(i).setOnClickListener(this);
}
...
}
...
@Override
public void onClick(View v) {
//Either check for button ids or simply:
for (Button button : buttonList) {
button.setVisibility(View.INVISIBLE);//or View.GONE
}
}
}
我正开始 Android 开发,但我一直找不到答案,因为我可能不知道如何正确措辞。我想要做的是在我点击任何按钮后将所有按钮设置为不可见。最简单的方法是:
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
Button button4 = findViewById(R.id.button4);
setInvisible(button1);
setInvisible(button2);
setInvisible(button3);
setInvisible(button4);
不过我觉得这违背了编程的DRY原则。我的意思是如果有 100 个按钮怎么办?
经过一番思考,我想我可以使用一个循环,让我成为每个按钮编号的占位符。这样它就会遍历每一个。但是我不确定使用什么方法。
您可以按照以下方式进行:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private int[] btnIds = new int[]{R.id.button1, R.id.button2, R.id.button3, R.id.button4};
private List<Button> buttonList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_group);
for(int i = 0; i < btn.length; i++){
buttonList.add(findViewById(btnIds[i]));
buttonList.get(i).setOnClickListener(this);
}
...
}
...
@Override
public void onClick(View v) {
//Either check for button ids or simply:
for (Button button : buttonList) {
button.setVisibility(View.INVISIBLE);//or View.GONE
}
}
}