2012-05-11 63 views
1

我有100個按鈕(從button000到999)。有沒有什麼辦法可以爲它們設置所有的onOnClick?因爲所有按鈕都具有相同的功能。 在此先感謝。setOnClick for 100 buttons

+1

將它們放在一個列表,循環在列表中,你需要做什麼。 – assylias

+3

使用'Button'並對其進行擴展並在其中聲明setOnClick。 – Herry

回答

1

如果您的按鈕佈局內再做這樣的。

int childcount = ll.getChildCount(); 
for (int i=0; i < childcount; i++){ 
     View v = ll.getChildAt(i); 
     v.setOnCLickListener(this); 
} 
+0

謝謝。我能否再問你一個問題:我如何識別所有這些問題?我使用這個查詢來定義1個按鈕:Button btn000 =(Button)findViewById(R.id.btn000); – detno29

+0

if(v instanceof Button){我們有一個按鈕} else {skip it}確保你只在按鈕上設置了監聽器 – mihail

+0

,也可以將你的這1000個按鈕與其他的按鈕區分開來,你可以使用btn000.setTag(「mybutton 「),依此類推,帶有相同標籤的其他999按鈕,並在onClick(view v)回調中使用v.getTag(); –

1

好友嘗試這種方式

import android.view.View.OnClickListener; 

public class MyActivity extends Activity implements OnClickListener { 

    @Override public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button buttonA = (Button) findViewById(R.id.buttonA);  
    buttonA.setOnClickListener(this); 
    Button buttonB = (Button) findViewById(R.id.buttonB); 
    buttonB.setOnClickListener(this); 
    } 

    //etc... etc... 

public void onClick(View v) { 

    switch (v.getId()) { 
    case R.id.buttonA: 
     // do something 
     break; 
    case R.id.buttonB: 
     // do something else 
     break; 
    } 
} 
+0

我認爲他想要避免typibg全部出局。 – Ahmad

1

在現在,我可以說,在
使用button000.setOnclicklistener(本)最簡單的方法;

: 

    : 

button999.setOnclicklistener(this); 

,並在當前的類實現OnClickListener ....

0

只需添加您的按鈕陣列和 只是循環按鈕和一個聽衆可以撥打下面的代碼塊:

for (int i=0; i < buttonArray.length; ++i){ 
     buttonArray[i].onClick(this); 
} 
0

有兩種方法,一種是你可以通過onClick方法設置onClick在xml佈局文件中,你可以定義方法,當點擊按鈕時應該調用該方法。當您在xml中定義按鈕時,此方法是適當的。

如果要添加的活動按鈕,如果你是在一個循環中添加,那麼你可以,如果你確信這是你的應用程序來創建1000個按鈕的最好方式

for(int i=0; i<100; i++) 
{ 
    //Create and Add button 
    btn.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View view) 
     { 
      //Operations 
     } 
    }); 
} 
1

這樣做,那麼這將是這樣的:

Button [] my_button=new Button[1000]; 
LinearLayout ll=(LinearLayout)findViewById(R.id.mylayout); 
for (int i=0;i<1000;i++){ 
    my_button[i]=new Button(this); 
    my_button[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
          LayoutParams.WRAP_CONTENT)); 
    my_button[i].setText("button "+i); 
    ll.addView(my_button[i]); 
    my_button[i].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     ////click event 
     } 
    }); 
} 
0

如果所有按鈕都完全相同的功能,那麼你可以簡單的使用

private OnClickListener mListenr=new OnClickListener(
@Override 
public void onClick(View v) { 
//Whatever you want 
} 

for(int i=0; i<100; i++) 
{ 
mButton[i].setOnClickListener(mListenr); 
} 

你可以參考this來看看如何實現監聽器。

0

最好的方法,使動態按鈕像

Integer[] button_Ids = {R.id.btn000,R.id.btn001...............,R.id.btn999}; 
for(int i=0;i<100;i++) 
{ 
Button btn = (Button)findViewById(button_ids[i]); 
    btn.setOnClickListner(this); 
    } 
    @Override 
public void onClick(View v) 
     { 
     Toast.make(getApplicationContext,"Hello",1000).show(); 
     }