如果我有,例如,30個按鈕,並且我想爲它們中的每一個添加一個OnClickListener
,我是否必須手動爲每個人執行button.setOnClickListener(this);
?這看起來很混亂。有沒有一種方法來一次爲多個對象設置方法?
是否可以使用循環或其他?
如果我有,例如,30個按鈕,並且我想爲它們中的每一個添加一個OnClickListener
,我是否必須手動爲每個人執行button.setOnClickListener(this);
?這看起來很混亂。有沒有一種方法來一次爲多個對象設置方法?
是否可以使用循環或其他?
看看這個代碼:
Button[] b = new Button[30];
for(int i=0; i < b.length; i++)
{
b[i].setOnClickListener(this);
}
編輯:這一點,你需要使用下面的循環
for(int i=0; i< b.length; i++){
b[i] = (Button) findViewById(R.id.button+i);
}
,以確定每個按鈕之前,可以實現onClickListener
界面在你的活動,然後傾聽基於ID進行點擊。
public class MyClickClass implements OnClickListener {
@Override
public void onClick(View v) {
switch(v){
case R.id.button1:
//some code
break;
case R.id.button2:
//some code
break;
}
}
}
這裏,layout
是對包含按鈕的父視圖組的引用。我還假設你的Activity擴展onClickListener(.setOnClickListener(this)
)。如果沒有,那麼只需傳遞一個對onclick()方法的引用即可。
for (int i = 0; i < layout.getChildCount(); i++) {
View v = layout.getChildAt(i);
Class c = v.getClass();
if (c == Button.class) {
((Button)v).setOnClickListener(this);
}
}
如果所有的按鈕都不存在於同一個視圖組中,可以稍作努力,使其成爲遞歸的。然後,您可以從根視圖組中進行遞歸。
如果您有不同的操作需要頂部設置到每個不同的按鈕,您可以使用onClickListener的數組,然後在循環中的每個按鈕上運行。以下示例假定按鈕的數量等於偵聽器的數量。
Button[] b = new Button[30];
onClickListener[] myListeners = new onClickListener[30];
{
//Initialize and add some code to each one of Listeners in the onClick method
}
for(onClickListener a: myListiners)
{
b[a.indexof].setOnClickListener(a);
}
您可以在您的XML屬性中使用'android:onClick =「function_name」'。 –
@GauravBhor有沒有辦法在Java中做到這一點? – RiThBo
然後你必須手動設置'onClick'監聽器。如果你的按鈕id是一個序列,你可以使用for循環。 –