2016-09-25 37 views
1

可以說我有這些按鈕:b1,b2,b3,b4,b5。我正在尋找如何做到這一點:Android:在大量小部件上動態添加onClickListener

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{...}); 
} 

任何人有一個想法?

+1

如果你想在活動中做到這一點,更好的方法是在xml中添加onClick。並將這一個方法寫入能捕獲所有按鈕點擊的活動中。 – Michael

回答

3

所有ID'sinteger所以最簡單的方法就是把它們在integer array和使用它們,加上陣列易於操作(設置/復位IDS)。如果您不想操作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(){ 
.. 
} 
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」帶來了大量的答案。