2012-07-31 69 views
0

這裏的情況:我有一個動態生成一串隨機定製imagebuttons的並將它們添加到TableRows,在TableView中,在我的XML的活動。此活動還有一個方法,我想在單擊其中一個/這些按鈕時調用。按鈕裏面有變量;該方法獲取這些變量並將它們設置爲一個TextView(在同一個活動中),所以我想所有的按鈕都可以使用這一個方法。如果這些按鈕是在XML中定義的,我只需使用android:onClick =「displayCell」來指定方法,但它們不是。有沒有辦法只爲這些按鈕設置onClick,因爲我在活動中生成這些按鈕,或者我必須使用android系統中動態添加按鈕,如何添加的onClick爲xml

button.setOnClickListener(new OnClickListener(){....});

,並辦理了一堆麻煩,因爲我在一些問題的答案已經看到了在這裏?我對此的問題是,我似乎無法從內部的onClick打電話給我的方法,因爲該方法(按鈕)的說法是不是最終的(我做了一堆的「按鈕」的循環,所以我不要「T認爲它可以):

button.setOnClickListener(新OnClickListener(){ 公共無效的onClick(查看q){ button.getActivity()displayCell(按鈕); //我想這樣做。這個但這顯然是行不通的 } });

回答

1

你可以有活動實現OnClickListener,然後(假設你是在活動):

button.setOnClickListener(this); 
0

對此的解決方案可能是:

  • 創建按鈕的不同實例(所以。你可以使它們最終)
  • 使用setId()方法給它們一個整數ID(稍後參考它們)。您可以將ID存儲在一個List以便稍後引用它們。
  • 定義他們的onClickListeners創建後馬上。
1

是的comodoro狀態,或使您的onClickLIstener成爲您的類的成員變量,不要對每個按鈕做「新」。

private OnClickListener mOnClickListener = new OnClickListener() {...}; 

和創建按鈕時:

button.setOnClickListener(mOnClickListener); 

在你的聽衆的onclick()函數將被傳遞按鈕本身的視角。您可以從此功能訪問按鈕變量等。

public void onClick(View v) 
{ 
ImageButton button = (ImageButton)v; 
// and access your button data via button object... 
} 
0

嘗試使用繼承自按鈕的類並在其中添加OnClickListener。就像這樣:

class MyButton extends Button { 

     OnClickListener clicker = new OnClickListener() { 
     public void onClick(View v) { 

       displayCell(v); 

     } 
     }; 

}