Android:在大量小部件上动态添加onClickListener

时间:2016-09-25 15:51:55

标签: java android onclicklistener

假设我有这些按钮: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{...});
}

有人有想法吗?

2 个答案:

答案 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”带来了大量的答案。