Ricci
Ricci

Reputation: 217

How to make button listener group method?

So i have 12 button that i want to make every 4 button do same method, so it is something like this

   @Override
    public void onClick(View one) {

           if(one==button1|| one==button2|| one==button3|| one==button4){
              //do something
   }
}
   @Override
    public void onClick(View two) {

           if(two==button5|| two==button6|| two==button7|| two==button8){
              //do something
   }
}
   @Override
    public void onClick(View three) {

           if(three==button9|| three==button10|| three==button11|| three==button12){
              //do something
   }
}

it is possible to do that method? if yes can anyone help me give sample code for that? Thank's

Upvotes: 0

Views: 118

Answers (3)

sbstnzmr
sbstnzmr

Reputation: 421

I would make the Activity implement an OnClickListener

public class MainAcivity extends AppCompatActivity implements View.OnClickListener {
    private Button buttonOne
    private Button buttonTwo
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button buttonOne = (Button) rootView.findViewById(R.id.buttonOne);
        Button buttonTwo = (Button) rootView.findViewById(R.id.buttonTwo);
        ...


        buttonOne.setOnClickListener(this);
        buttonTwo.setOnClickListener(this);
        ...
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.buttonOne:
                // do something
                break;
            case R.id.buttonTwo:
                // do something
                break;
        }
    }
}

You can easily have one case for multiple buttons then.

Upvotes: 0

lewkka
lewkka

Reputation: 1055

Create one listener for multiple buttons:

OnClickListener listener1 = new OnClickListener() {
        @Override
        public void onClick(View v) {
            // some code
        }
};

button1.setOnClickListener(listener1);
button2.setOnClickListener(listener1);
button3.setOnClickListener(listener1);
button4.setOnClickListener(listener1);


OnClickListener listener2 = new OnClickListener() {
        @Override
        public void onClick(View v) {
            // some code
        }
};

button5.setOnClickListener(listener2);
button6.setOnClickListener(listener2);
button7.setOnClickListener(listener2);
button8.setOnClickListener(listener2);

or use switch in listener, like this:

@Override
public void onClick(View button) {
   switch (button.getTag())(
       case 'button1':
       case 'button2':
       case 'button3':
           // do something
           break;
       case 'button4':
       case 'button5':
       case 'button6':
           // do anotherthing
           break;          
   }
}

As Abhishek Kumar said, you can set listeners to button at xml:

android:onClick="onClick"

Upvotes: 1

Abhishek Kumar
Abhishek Kumar

Reputation: 378

You can also set it in your layout xml using the android:onclick attribute.

ie. for first 4 Buttons

android:onClick="onClickGroup1"

Then in your activity class add the onClick method.

public void onClickGroup1(View v) {
...

Upvotes: 0

Related Questions