Android – Add an array of buttons to a GridView in an Android application


I have an application that will have 5-15 buttons depending on what is available from a backend. How do I define the proper GridView layout files to include an array of buttons that will each have different text and other attributes? Each button will essentially add an item to a cart, so the onClick code will be the same except for the item it adds to the cart.

How can I define an array so I can add a variable number of buttons, but still reference each of them by a unique ID? I've seen examples of the arrays.xml, but they have created an array of strings that are pre-set. I need a way to create an object and not have the text defined in the layout or arrays xml file.

Update – Added info about adding to a GridView

I want to add this to a GridView, so calling the [addView method](,%20int) results in an UnsupportedOperationException. I can do the following:

ImageButton b2 = new ImageButton(getApplicationContext());
android.widget.LinearLayout container = (android.widget.LinearLayout) findViewById(;

but that doesn't layout the buttons in a grid like I would like. Can this be done in a GridView?

Best Solution

In the following code, you should change the upper limits of the for to a variable.

public class MainActivity
        extends Activity
        implements View.OnClickListener {

    public void onCreate(Bundle savedInstanceState) {

        TableLayout layout = new TableLayout (this);
        layout.setLayoutParams( new TableLayout.LayoutParams(4,5) );


        for (int f=0; f<=13; f++) {
            TableRow tr = new TableRow(this);
            for (int c=0; c<=9; c++) {
                Button b = new Button (this);
                b.setTextColor(Color.rgb( 100, 200, 200));
                tr.addView(b, 30,30);
            } // for
        } // for

    } // ()

    public void onClick(View view) {
        ((Button) view).setText("*");
        ((Button) view).setEnabled(false);
} // class