2012-01-02 138 views
0

你好我想單擊一個按鈕,每次單擊它時都會向表格行添加一個新按鈕。在將3個按鈕添加到該行後,我想動態創建一個新的表格行併爲其添加一個新的按鈕。將按鈕動態添加到TableRow

我知道如何用一個按鈕添加一行到一個tableLayout,如果我點擊一個按鈕。我不知道如何在每次點擊時修改表格行,這樣我可以添加一個額外的按鈕。

任何意見將是相當有幫助和讚賞。

以下是我的代碼,但是這是不完美的

public class DynamicTableView extends Activity { 

    TableLayout mTlayout; 
    String[] mTextofButton = { "Dipak", "E", "I", "J", "L", 
      "M", "G", "R", "N", "T", "H", "P", 
      "K", "Y", "V" }; 

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


     TableRow tr=new TableRow(this); 
     for(int i=0;i<mTextofButton.length;i++){ 
      Button btn=new Button(this); 
      btn.setText(mTextofButton[i]); 
      tr.addView(btn); 

     } 
     mTlayout.addView(tr); 
    } 
} 

在此先感謝。

+0

你有什麼問題?看起來你的代碼應該工作。 – 2012-01-02 11:52:11

+0

我的代碼是可以工作的,但是按鈕是動態添加的,請參閱上面對我的問題的描述。如何在一行中只添加3個按鈕,然後創建下一個表格。 – 2012-01-02 11:55:16

+0

看起來像你有問題**簡單** codeflow ... – Selvin 2012-01-02 12:56:50

回答

10

使用下面的代碼: -

public class DynamicButtonsActivity extends Activity { 

    TableLayout mTlayout; 
    TableRow tr; 
    String[] mTextofButton = { "D", "E", "I", "J", "L", "M", "G", "R", "N", 
      "T", "H", "P", "K", "Y", "V" }; 

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

     int i = 0; 
     while (i < mTextofButton.length) { 
      if (i % 3 == 0) { 
       tr = new TableRow(this); 
       mTlayout.addView(tr); 
      } 
      Button btn = new Button(this); 
      btn.setText(mTextofButton[i]); 
      btn.setId(i); 
      btn.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        System.out.println("v.getid is:- " + v.getId()); 
       } 
      }); 
      tr.addView(btn); 
      i++; 
     } 
    } 
} 
1

他們將一個ButtononClick(),說addNewButton(),做這樣的事情:

public void addNewButton(View b) 
{ 
     for(int i=0; i<mTextofButton.length; i+=3){ 
       TableRow tr=new TableRow(this); 

       Button btnOne=new Button(this); 
       btnOne.setText(mTextofButton[i]); 
       tr.addView(btnOne); 

       Button btnTwo =new Button(this); 
       btnTwo.setText(mTextofButton[i+1]); 
       tr.addView(btnTwo); 

       Button btnThree =new Button(this); 
       btnThree.setText(mTextofButton[i+2]); 
       tr.addView(btnThree); 
       mTlayout.addView(tr); 
     } 
} 

但要小心你mTextofButton.length,意味着它應該由3否則,你會得到ArrayIndexOutOfBondException divisable。更好的方法是使用ArrayList<String>

+0

我在一行中添加3個按鈕,然後創建下一個錶行,但我的問題是「如何做到這一點?」 – 2012-01-02 12:03:09

+0

看到我編輯的答案..! – 2012-01-02 12:18:28

+0

您的代碼正在工作,但是如何爲動態按鈕創建偵聽器。 – 2012-01-02 13:42:16

4
int i=0; 
    while(i<mTextofButton.length){ 
      if(i%3==0){ 
       TableRow tr=new TableRow(this); 
       mTlayout.addView(tr); 
      } 
      Button btn=new Button(this); 
      btn.setText(mTextofButton[i]); 
      tr.addView(btn); 
      i++; 
    }