detno29
detno29

Reputation: 2231

setOnClick for 100 buttons

I have 100 buttons (from button000 to button 999). Is there any way to setOnClick for all of them? Because all button have the same function. Thanks in advance.

Upvotes: 1

Views: 925

Answers (8)

Its not blank
Its not blank

Reputation: 3095

If all buttons have exactly same functionality then you can simple use

private OnClickListener mListenr=new OnClickListener(
@Override
public void onClick(View v) {
//Whatever you want
}

for(int i=0; i<100; i++)
{
mButton[i].setOnClickListener(mListenr);
}

you can refer this to see ways to implement listener.

Upvotes: 0

Nikhil Lamba
Nikhil Lamba

Reputation: 603

Best way to make Button Dynamically like

 Integer[] button_Ids = {R.id.btn000,R.id.btn001...............,R.id.btn999};
 for(int i=0;i<100;i++)
 { 
 Button btn = (Button)findViewById(button_ids[i]);
  btn.setOnClickListner(this);
  }
  @Override
 public void onClick(View v)
         {
         Toast.make(getApplicationContext,"Hello",1000).show();
         }

Upvotes: 0

user1049280
user1049280

Reputation: 5236

if you are sure that it's the best way for your app to create 1000 buttons, then it will be something like this:

Button [] my_button=new Button[1000];
LinearLayout ll=(LinearLayout)findViewById(R.id.mylayout);
for (int i=0;i<1000;i++){
   my_button[i]=new Button(this);
   my_button[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                          LayoutParams.WRAP_CONTENT));
   my_button[i].setText("button "+i);
   ll.addView(my_button[i]);
   my_button[i].setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
         ////click event
      }
   });
}

Upvotes: 1

jeet
jeet

Reputation: 29199

there are two methods one is you can set onClick in xml layout file by onClick method you can define the method, that should be invoked when button is clicked. This method is appropriate when you define buttons in xml.

If you are adding buttons in Activity, and if you are adding in a loop then you can do as

for(int i=0; i<100; i++)
{
   //Create and Add button
   btn.setOnClickListener(new OnClickListener()
   {
       public void onClick(View view)
       {
            //Operations
       }
   });
}

Upvotes: 0

GingerHead
GingerHead

Reputation: 8230

Just add your buttons in an array and Just loop the buttons and on a listener you can call the following block of code:

for (int i=0; i < buttonArray.length; ++i){
      buttonArray[i].onClick(this);
}

Upvotes: 0

Dheeresh Singh
Dheeresh Singh

Reputation: 15701

At right now I can say easiest way in
use button000.setOnclicklistener(this);

  :

  :

 button999.setOnclicklistener(this);

and implement Onclicklistener in this current class....

Upvotes: 1

Tarun
Tarun

Reputation: 13808

If your buttons are inside a layout then do like this.

int childcount = ll.getChildCount();
for (int i=0; i < childcount; i++){
      View v = ll.getChildAt(i);
      v.setOnCLickListener(this);
}

Upvotes: 1

Ronak Mehta
Ronak Mehta

Reputation: 5979

Buddy try this way

import android.view.View.OnClickListener;

public class MyActivity extends Activity implements OnClickListener {

  @Override public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     Button buttonA = (Button) findViewById(R.id.buttonA);    
     buttonA.setOnClickListener(this);
     Button buttonB = (Button) findViewById(R.id.buttonB); 
     buttonB.setOnClickListener(this);
  }

  //etc... etc...

 public void onClick(View v) {

  switch (v.getId()) {
     case R.id.buttonA: 
      // do something
      break;
     case R.id.buttonB:
      // do something else
      break;
  }
}

Upvotes: 1

Related Questions