2011-05-25 65 views
1

我已經創建了按鈕的動態使用RelativeLayout.Now我必須實現動態按鈕的偵聽器。我該如何做到這一點,另一件事我創造了多個按鈕,所以PLZ告訴我我該如何做到這一點?如何實現動態創建按鈕的偵聽器?

這是我的代碼

public class CreateButton extends Activity { 

    int top=60,bottom=350, i; 
    int s = 1,iddelete = 1,idedit=1; 
    RelativeLayout rl; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     rl = (RelativeLayout)findViewById(R.id.edit_r); 

     // Create Bed Room 
     Button Btn_BedRoom = (Button)findViewById(R.id.bed); 
     Btn_BedRoom.setOnClickListener(ListenrOf_BedRoom); 

    } 

// Listener Of Create Bed Room 
    private OnClickListener ListenrOf_BedRoom = new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      CreateRoom(); 
      i+=35; 
     } 
    }; 


    public void CreateRoom() 
    {  
     final Button delete = new Button(this); 
     delete.setText("delete"); 
     delete.setBackgroundResource(R.drawable.cross); 

     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);    
     lp.setMargins(120, top+i, 0, bottom-i); 
     delete.setHeight(5); 
     delete.setWidth(5); 
     delete.setLayoutParams(lp); 
       delete.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     CreateRoom();   
    } 
    });     
       rl.addView(delete); 


     Button BtnEdit = new Button(this); 
     RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);    
     lp1.setMargins(150,top+i,0,bottom-i); 
     BtnEdit.setBackgroundResource(R.drawable.edit); 
     BtnEdit.setHeight(5); 
     BtnEdit.setWidth(5); 
     BtnEdit.getRight(); 
     BtnEdit.setLayoutParams(lp1); 
     rl.addView(BtnEdit); 

     TextView tv = new TextView(this); 
     RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     lp2.setMargins(180,top+i,0,bottom-i); 
     tv.setText("Bed Room " + s++); 
     tv.setLayoutParams(lp2); 
     rl.addView(tv); 

    }; 


} 

回答

4
Button bt = new Button(this.getApplicationContext()); 
bt.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // do something when the button is clicked 
    } 
}); 
+0

一旦你添加了最後}和; :D – Mike 2013-02-07 18:02:53

+0

@Mike謝謝,沒有明白。 – 2013-02-07 18:12:08

0

只要打電話setOnClickListener爲您所創建的按鈕,並通過你想要的點擊監聽器對象。

+0

感謝重播丹我已經實現了它,但它不工作。 – Akshay 2011-05-25 17:48:26

+0

你可以發佈不工作的代碼嗎? – 2011-05-25 17:55:38

+0

嗨丹我已經添加了我的代碼plz建議我的變化。 – Akshay 2011-05-25 18:03:21

0

您必須保留對這些按鈕的引用,以便您可以在其上設置偵聽器(setOnClickListener())。您當然可以設置相同的聽衆,但在這種情況下,請記住爲每個按鈕設置一個不同的ID(setId())。

0
Button mybutton = new Button(this); 
mybutton.setText("My Button"); 
mybutton.setOnClickListener(this); 
+0

這隻會在當前類實現'OnClickListener'並重寫'onClick()'方法時才起作用。 – 2011-05-25 17:26:10

+0

你可以顯示你的代碼,以便我們可以幫助你... – 2011-05-25 17:27:54

+0

嗨Tanmay曼德爾我已經添加了我的代碼plz建議我改變 – Akshay 2011-05-25 18:06:39