Search code examples
androidandroid-relativelayoutlayout-inflater

Adding multiple buttons on the fly


I want to add multiple buttons dynamically through the code on button click, I searched many previous posts which shows to add single button, but I need multiple ones.

Attached is the sample code.

   public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1 = (Button)findViewById(R.id.button1);
        b1.setOnClickListener(new View.OnClickListener() {      
            @Override
            public void onClick(View v) {               
                AddAll();                   
            }
        });
    }
    public void AddAll() {
        final RelativeLayout rl = (RelativeLayout)findViewById(R.id.rel);
        final Button btn = new Button(this);
        for(int i=0;i<4;i++)
        {
            rl.addView(btn); 
            btn.setText("hello");
            btn.setWidth(320);
            btn.setHeight(40);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

Please help regarding the same. However adding single button is working fine, but I need to add many buttons one below the other.


Solution

  • public void AddAll() {
    final RelativeLayout rl = (RelativeLayout)findViewById(R.id.rel);
    
    for(int i=0;i<4;i++)
    {
        final Button btn = new Button(this);
        rl.addView(btn); 
        btn.setText("hello");
    
        btn.setWidth(320);
        btn.setHeight(40);
    }
    //////////////////////////////////////////////////////////
    }
    

    For more detail :-

    How do I programmatically add buttons into layout one by one in several lines?

    or

     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ScrollView scrollView= new ScrollView(this);
        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);                
        for (int i=0; i<10; i++){
            LinearLayout ll = new LinearLayout(this);
            ll.setOrientation(LinearLayout.HORIZONTAL);
            ll.setTag(i);                            
            TextView tv=new TextView(this);
            tv.setText("Row " + i);            
            ll.addView(tv);
            Button b = new Button(this);
            b.setTag(i);
            b.setText("Button " + i);            
            ll.addView(b);                    
            mainLayout.addView(ll);
        }
        scrollView.addView(mainLayout);
        setContentView(scrollView);
    }