Java 有没有办法用相似的ID名称初始化多个视图?
我正在使用复选框,在使用TextView时遇到了类似的问题,下面的方法工作正常,但是多余的。我在使用10个文本视图时也做了同样的事情Java 有没有办法用相似的ID名称初始化多个视图?,java,android,Java,Android,我正在使用复选框,在使用TextView时遇到了类似的问题,下面的方法工作正常,但是多余的。我在使用10个文本视图时也做了同样的事情 private CheckBox []checkBoxes ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac
private CheckBox []checkBoxes ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_toast);
checkBoxes = new CheckBox[5];
checkBoxes[0] = findViewById(R.id.checkBox1);
checkBoxes[1] = findViewById(R.id.checkBox2);
checkBoxes[2] = findViewById(R.id.checkBox3);
checkBoxes[3] = findViewById(R.id.checkBox4);
checkBoxes[4] = findViewById(R.id.checkBox5);
}
我已经给了复选框的id一个通用名称,有什么功能我可以使用吗?
我在想,如果有这样的方法:
for(int i=1;i<=5;i++){
checkBoxes[i-1]=findViewById(R.id.checkBox(somehow use i));}
for(inti=1;i您可以通过在资源中声明一个int数组来实现,条目是您的复选框ID
例如:
<resources>
<integer-array name="check_box_ids">
<item>@id/checkBox1</item>
<item>@id/checkBox2</item>
<item>@id/checkBox3</item>
<item>@id/checkBox4</item>
</integer-array>
您可以通过在资源中声明一个int数组来实现,其中的条目是您的复选框ID
例如:
<resources>
<integer-array name="check_box_ids">
<item>@id/checkBox1</item>
<item>@id/checkBox2</item>
<item>@id/checkBox3</item>
<item>@id/checkBox4</item>
</integer-array>
如果您试图简化事情:
private int[] ids = {R.id.checkBox1,R.id.checkBox2,R.id.checkBox3,R.id.checkBox4,R.id.checkBox5};
private CheckBox []checkBoxes = new CheckBox[5];
//loop
for(int i =0 ; i<checkBoxes.length ; i++){
checkBoxes[i] = findViewById(ids[i]);
}
private int[]ids={R.id.checkBox1,R.id.checkBox2,R.id.checkBox3,R.id.checkBox4,R.id.checkBox5};
私有复选框[]复选框=新复选框[5];
//环路
对于(int i=0;i如果您试图简化事情:
private int[] ids = {R.id.checkBox1,R.id.checkBox2,R.id.checkBox3,R.id.checkBox4,R.id.checkBox5};
private CheckBox []checkBoxes = new CheckBox[5];
//loop
for(int i =0 ; i<checkBoxes.length ; i++){
checkBoxes[i] = findViewById(ids[i]);
}
private int[]ids={R.id.checkBox1,R.id.checkBox2,R.id.checkBox3,R.id.checkBox4,R.id.checkBox5};
私有复选框[]复选框=新复选框[5];
//环路
对于(int i=0;i)您在这里试图实现什么?我认为没有更好的方法,除非使用数据绑定而不使用数据绑定findViewById@HasanBouTaam我试图实现的是,由于我为复选框的ID分配了一种模式(复选框1、复选框2等),那么我可以通过任何循环或其他方式来利用它们吗?您在这里想实现什么?我认为没有更好的方法,除非使用数据绑定而不这样做findViewById@HasanBouTaam我试图实现的是,由于我为复选框的ID分配了一种模式(复选框1、复选框2等),那么我可以通过任何循环或其他方式使用它们吗?如果有以下方式,我会这样想:for(inti从1到5){checkBox[I]=findViewById(R.id.checkBox(以某种方式使用I的值))}
这是不可能的。实现接近您所描述的目标的唯一安全和干净的方法是我在回答中介绍的方法我在想是否有以下方法:对于(int I从1到5){checkBox[I]=findViewById(R.id.checkBox(以某种方式使用I的值))}
这是不可能的。实现接近您所描述的目标的唯一安全和干净的方法是我在回答中提出的方法谢谢,但反过来几乎是一样的。您在寻找其他东西吗?在我的问题中添加了确切的东西。您以某种方式使用我是什么意思?我想要的是以某种方式使用u将复选框的常用名称平铺以初始化它们。谢谢,但反过来几乎是一样的。你在寻找其他东西吗?在我的问题中添加了同样的东西。你以某种方式使用i是什么意思?我只想以某种方式利用复选框的常用名称来初始化它们。
private CheckBox []checkBoxes = new CheckBox[5];
private LinearLayout linearLayout;
//on create
linearLayout = findViewById(R.id.layout);
//loop
for(int i =0 ; i<checkBoxes.length ; i++){
checkBoxes[i] = (CheckBox)linearLayout.findViewWithTag(String.valueOf(i+1));
}