Добавить кнопки в TableRow динамически - PullRequest
0 голосов
/ 02 января 2012

Здравствуйте. Я хочу нажать кнопку, которая будет добавлять новую строку в строку таблицы при каждом нажатии. После добавления 3 кнопок в строку я хочу динамически создать новую строку таблицы и добавить в нее новую кнопку.

Я знаю, как добавить строку с кнопкой (ями) в таблицу, если я нажму кнопку. Я не знаю, как изменять строку таблицы при каждом нажатии, чтобы добавить дополнительную кнопку.

Любой совет был бы весьма полезен и оценен.

Ниже приведен мой код, но он не идеален

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);
    }
}

Спасибо заранее.

Ответы [ 3 ]

10 голосов
/ 30 мая 2012

Используйте следующий код: -

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++;
        }
    }
}
4 голосов
/ 02 января 2012
    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++;
    }
1 голос
/ 02 января 2012

их будет Button onClick(), скажем 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.лучше использовать ArrayList<String>

...