2011-05-25 6 views
1

RelativeLayoutを使用してボタンを動的に作成しました。次に、動的ボタンのリスナーを実装する必要があります。どのように私はこれを行うことができますそして、私は複数のボタンを作成している別のことは、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

+0

@マイクありがとう、それをキャッチしていない。 –

0

ですちょうどあなたが作成したボタンのsetOnClickListenerを呼び出し、そしてあなたが望むクリックリスナーオブジェクトを渡します。

+0

リプレイのおかげでDanは実装しましたが、動作しません。 – Akshay

+0

動作しないコードを投稿できますか? –

+0

こんにちはダン私は私のコードを追加しましたplzは私に変更を提案します。 – Akshay

0

リスナー(setOnClickListener())を設定できるように、これらのボタンへの参照を保持する必要があります。もちろん、常に同じリスナーを設定することができますが、その場合は、各ボタンに別のID(setId())を設定することを忘れないでください。

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

これは、現在のクラスが 'OnClickListener'を実装し、' onClick() 'メソッドをオーバーライドする場合にのみ機能します。 –

+0

私たちがあなたを助けることができるようにあなたのコードを表示することができます.. –

+0

こんにちはTanmay Mandal私は自分のコードを追加しましたplz私の変更を示唆 – Akshay

関連する問題