2012-08-03 33 views

回答

2

以同樣的方式你會在一個單一的按鈕...

上點擊監聽器設置一個,如果你有一個數組會是這個樣子:

btns[0].setOnClickListener(new OnClickListener() { 
    public void onClick(View v){ 
     //do something 
    } 
}); 

btns[1].setOnClickListener(new OnClickListener() { 
    public void onClick(View v){ 
     //do something 
    } 
}); 
//etc. 

如果你想讓他們都做同樣的事情,你可以使用for循環來遍歷數組,如下所示:

for(int i = 0; i< btns.length; i++){ 
    btns[i].setOnClickListener(new OnClickListener() { 
     public void onClick(View v){ 
      //do something 
     } 
    }); 
} 

我不知道你在做什麼,但如果你有一個按鈕數組,很可能你應該使用一個帶有ListView的適配器或其他東西,而不是你現在正在做的每個事情。

+0

? if(btn [i] == 0)(action1).... if(btn [i] == 100)(action100),not is a answer – delive 2015-09-09 09:29:20

1

沒有看到的解釋一些代碼或更多,這是很難真正回答你的問題,但這裏有一些提示:

之前我們得到的聽衆,我們必須確保每個動態創建的按鈕知道如何響應點擊事件。您可以使用按鈕上的setTag方法將任意對象附加到該按鈕上。該對象將表示點擊按鈕時的動作。你可以使用整數作爲這個對象(也許是一些常量值),或者如果每個按鈕都需要一些獨特的數據,創建一個類來維護按鈕在點擊時需要採取的行動以及你需要的數據(或者至少是對它的引用)。

然後,您可以初始化處理所有按鈕點擊的單個偵聽器。在這個偵聽器的onClick方法中放置了一個條件分支來處理所有的點擊事件。在創建它們時,將此偵聽器設置在所有動態按鈕上。在onClick開始時,從onClick方法的View參數中獲取標籤(該視圖將是被點擊的按鈕),並使用它來決定要採用的條件的哪個分支。

希望這會有所幫助。如果您提出更具體的問題,我們將能夠提供更詳細的幫助。

5

我沒有看到需要爲每個按鈕創建一個新的OnClickListener - 所有按鈕都可以共享一個監聽器。

private OnClickListener myListener = new OnClickListener() { 
    public void onClick(View v) { 
    Object tag = v.getTag(); 
    // Do something depending on the value of the tag 
    } 
}; 

... 

for (int i=0; i < btns.length; ++i) { 
    btns[i].setOnClickListener(myListener); 
    btns[i].setTag(some_identifying_information); 
} 

當然,你可以創建爲每個按鈕的唯一OnClickListener,並利用這種方式:如果你想控制100

for (int i=0; i < btns.length; ++i) { 
    final Button btn = btns[i]; 
    btn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // do something depending on the value of btn, which you're allowed 
     // to reference here because it was declared final above. 
    } 
    }); 
} 
+0

p.s.就我個人而言,我更喜歡第一種模式。 – 2012-08-03 19:01:54

+0

重新使用OnClickListener對象的好處。 – FoamyGuy 2012-08-03 19:55:07