0

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

1

3 Answers 3

1

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"
Sign up to request clarification or add additional context in comments.

Comments

0

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) {
...

1 Comment

can i make onClickGroup 2 and onClickGroup3 too?
0

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.