2013-03-27 44 views
4

我正在從一個字符串數組中動態地填充一個表。表的每一行還有一個加號和減號按鈕來遞增/遞減一列的值。這些按鈕也是動態創建的,如下面的代碼所示。在這裏,如何在點擊時檢測確切的按鈕。即;如果我點擊第二行的「+」按鈕,我怎樣才能得到點擊的按鈕的ID進一步處理。如何識別從動態生成的表中點擊的按鈕

plusButton= new Button(this); 
minusButton= new Button(this); 
createView(tr, tv1, names[i]); 
createView(tr, tv2, (String)(names[i+1])); 
minusButton.setId(i); 
minusButton.setText("-"); 
minusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
plusButton.setId(i); 
plusButton.setText("+"); 
plusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));` 
+0

附加事件處理程序,就是這樣 – IamStalker 2013-03-27 11:57:54

回答

2

您可以爲每個按鈕設置一個onClickListener偵聽器。在onClick()方法中使用view.getId()方法中的按鈕ID來識別按鈕單擊。

您可以爲每個按鍵喜歡這裏添加單獨的偵聽器(假設您正在設置爲每個按鈕ID對應一個行)

minusButton.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      // Do some operation for minus after getting v.getId() to get the current row 
     } 
    } 
); 

編輯:

我假設你的代碼就是這樣。如果有偏差,請糾正我。

Button minusButton = null; 
for(int i = 0; i < rowCount; i++) 
{ 
    minusButton = new Button(this); 
    minusButton.setId(i); 
    // set other stuff and add to layout 
    minusButton.setOnClickListener(this); 
} 

讓你的類實現接口View.OnClickListener並實現onClick()方法。

public void onClick(View v){ 
    // the text could tell you if its a plus button or minus button 
    // Button btn = (Button) v; 
    // if(btn){ btn.getText();} 
    // getId() should tell you the row number 
    // v.getId() 
} 
+0

感謝您的反饋。但是我得到的id只是最後一個創建的按鈕。即。如果有兩行,則會有2個減號和加號按鈕。 onClickListener僅捕獲第二行上的點擊。我把一個斷點,只有第二行上的點擊被捕獲 – 2013-03-27 12:14:02

+2

非常感謝。它的工作:D – 2013-03-27 12:46:35

+0

不客氣。 – midhunhk 2013-03-27 13:13:53

0

你就可以用標籤:minusButton.setTag("-")plusButton.setTag("+")

在您的clickListener中,只需從view.getTag()的按鈕中獲取即可。

然後在比較字符串標籤的操作之間切換。

編輯:
ID的「應該」是唯一的。如果setId()不適合你,setTag()方法可能會幫助你。

+0

問題不在於識別加號或減號,請再次閱讀。我不能得到點擊按鈕的ID。onClickListener只是監聽在動態填充表中創建的最後一個按鈕。 – 2013-03-27 12:22:15

+1

對不起,誤解了你的問題。無論如何,setTag()方法可能會幫助你,如果(我不知道爲什麼)setId()不適合你。此外,ID的「應該」是唯一的。 – jila 2013-03-27 12:39:27

+0

是的,只是意識到了這一點 – 2013-03-27 12:42:08