2013-04-04 82 views
1

我正在動態創建一些按鈕,理想情況下希望能夠在按下按鈕時運行方法。Android:是否可以直接從setOnClickListener()調用方法?

甚至有可能像下面這樣:

private void someMethod(int ID){ 
//on button pressed do something with the ID 
} 

private void otherMethod(){ 

    for(Program element : someList) 
    { 
    addButton.setOnClickListener(someMethod(element.getID)); 
    } 
} 

顯然那只是一個模擬了一些代碼來說明我的問題。我知道你可以實例化一個新的類,所以看起來你應該可以調用一個方法,儘管到目前爲止,我只是不斷收到我的嘗試錯誤。

我已經看過網頁,但找不到任何答案,所以我想在這裏問。

回答

3

setOnClickListener定義點擊按鈕時會發生什麼。爲同一個按鈕多次設置是沒有意義的;你設置的最後一個將是活動的。

調用一個方法監聽器,聲明一個匿名類覆蓋:

addButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      someMethod(...); 
     } 
}); 

如果你想建立具有類似功能的多個按鈕,您可以通過按鈕需要循環(在列表中說),並設置它們的每個OnClickListener。爲了實現每股按鈕不同的變量,你可以使用Viewtag

for (Button b : buttons) { 
    b.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      someMethod(v.getTag()); 
     } 
    }); 
} 

現在,你可以簡單地設置Buttontag財產在任何你想要的XML(或manually),它會得到傳遞給偵聽器(以及方法)。

+0

對不起,如果這是一個愚蠢的問題,但爲什麼它內部的循環? – cosmicsafari 2013-04-04 23:37:38

+0

第二個例子更多,即時通訊尋找,謝謝。 – cosmicsafari 2013-04-04 23:38:45

+0

我不確定你要做什麼。我編輯了我的答案,以防您嘗試使用多個按鈕來調用具有不同參數的'someMethod'。 – 2013-04-04 23:38:51

相關問題