nick
nick

Reputation: 139

Android - multiple OnClickListener?

I have 4 images. We should be able to click on these images. I'd like to know if I have to create 4 OnClickListener, or there is another way to do this properly?

public class NavigateActivity extends Activity  implements OnClickListener {

    // images
    private ImageView phone;
    private ImageView bookings;
    private ImageView settings;
    private ImageView pictures;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.navigate);
        phone = (ImageView) findViewById(R.navigate.callcenter);
        phone.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if (v == phone) {
                    AlertDialog alertDialog = new AlertDialog.Builder(NavigateActivity.this).create();
                    alertDialog.setTitle("Attention");
                    alertDialog.setMessage("Etes-vous sur de vouloir appeler le Call center");

                    alertDialog.setButton("Oui", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int which) {
                          Intent callIntent = new Intent(Intent.ACTION_CALL);
                            callIntent.setData(Uri.parse("tel:1232456789"));
                            startActivity(callIntent);
                       }
                    });

                    alertDialog.setButton2("Non", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int which) {
                               dialog.cancel();  
                           }
                        });
                    alertDialog.show();
                }
            }
        });
 }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
}

Upvotes: 11

Views: 18863

Answers (5)

anddev
anddev

Reputation: 3204

You can use/make your listener this way:-

img1.setOnClickListener(imgClk);
img2.setOnClickListener(imgClk);
img3.setOnClickListener(imgClk);
img4.setOnClickListener(imgClk);

And then you have to create OnClickListener after onCreate/out side of onCreate()

    public OnClickListener imgClk = new OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
              switch(v.getId()){
                case R.id.img1:
                 //write your code here
                  break;

               case R.id.img2:
                 //write your code here
                  break;

               case R.id.img3:
                 //write your code here
                  break;

               case R.id.img4:
                 //write your code here
                  break;
           }
       };

I hope it helps you.

Upvotes: 5

Lalit Poptani
Lalit Poptani

Reputation: 67286

You can just do it like this,

phone.setOnClickListener(this);
bookings.setOnClickListener(this);
settings.setOnClickListener(this);
pictures.setOnClickListener(this);

And in the onClick() method,

 @Override
    public void onClick(View v) {

       if(v == phone){
              // your stuff
        }
       else if(v == bookings){
              // your stuff
        }
       else if(v == settings){
              // your stuff
        }
       ese if(v == pictures){
              // your stuff
        }
    }

Upvotes: 16

Farm
Farm

Reputation: 3396

I would suggest using android:onClick for more readable code.

Example :

<Button
    android:id="@+id/buttonId"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="buttonText" 
    android:onClick="onClick"/>

Then in your activity class add the onClick method.

public void onClick(View v) {
      switch(v.getId()){
           case R.id.myButton:
                   //Your logic goes here...
                   break;

           default:
                   break;
      }
}

Upvotes: 1

Sunil Kumar Sahoo
Sunil Kumar Sahoo

Reputation: 53647

To make any view listen to our action you have to attach listener to that view. So you need to attach four listeners. Attaching OnclickListener and writing implementation both are two different things

Upvotes: 1

Caner
Caner

Reputation: 59148

You can reuse your listener:

DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int which) {
                               /*...*/
                           }
                        });

phone.setOnClickListener(listener);
bookings.setOnClickListener(listener);
/*...*/

Upvotes: 6

Related Questions