假设我有这些按钮:b1,b2,b3,b4,b5。我正在寻找如何做到这一点:
ArrayList<Button> bAL = new ArrayList<>();
for (int i=1; i<=5; i++){
bAL.add((Button) findViewById(R.id.b+[i])); //The expression should equal to R.id.b1 or R.id.b2 or..
bAL.get(i).setOnclickListener(new View.onClickListener{...});
}
有人有想法吗?
答案 0 :(得分:3)
所有 ID's
都是 integer
,所以最简单的方法是将它们置于 integer array
并使用它们,加上数组很容易操作(设置/重置ID)。如果您不想操作ID数组,请将其标记为final
(效率会增加很少)。
int ar[]={ R.id.button1,R.id.button2,R.id.button3 };
ArrayList<Button> bAL = new ArrayList<>();
for (int i = 0; i < ar.length; i++){
bAL.add((Button) findViewById(ar[i]));
bAL.get(i).setOnclickListener(listener); // have a listener and just use the refereance
}
View.onClickListener listener =new View.onClickListener(){
..
}
答案 1 :(得分:0)
ArrayList<Button> bAL = new ArrayList<>();
for (int i=1; i<=5; i++){
String buttonId = "b" + i;
int resID = getResources().getIdentifier(buttonId, "id", getPackageName());
bAL.add((Button) findViewById(resID));
bAL.get(i).setOnclickListener(...);
}
这应该可以解决问题。下次尝试和谷歌,一个简单的谷歌“findviewbyid字符串android”带来了大量的答案。