views:

188

answers:

2

hi, i am stuck with a problem creating buttons dynamically in android. This is what i want to do-

I want to create 8 x 10 array of buttons. Since declaring 80 buttons in main.xml isn't efficient, I want to do this in the program itself. The biggest problem is placing/aligning the buttons like a grid. I can create button objects but how do I align them in the program?

Button b = new Button(this); 
b.setId(i);
b.setText("Button " + i); 

Like this-

1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
.
.
.
10 10 10 10 10 10 10 10 10 10

Any help in doing this "programtically" will be appreciated

+1  A: 

You need a container to place them all in:

<LinearLayout
    android:id="@+id/llContainer"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

And then I'd add them as 10 separate 'rows':

LinearLayout container = (LinearLayout) findViewById(R.id.llContainer);

for(int i = 0; i < 10; i++) {
   LinearLayout row = new LinearLayout(this, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
   container.addView(row);

   for(int x = 0; x < 8; x++) {

      Button btn = new Button(this, new LayouParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
      btn.setText(i + ':' + x);

      row.addView(btn);

   }
}
David Hedlund
A: 

Thanks everyone. I am NOT using buttons but a gridview for obvious reasons, cluttered UI being one of them. This example and the discussion was very helpful though.

jack