Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - multiple OnClickListener?

Tags:

android

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

    }
}
like image 713
nick Avatar asked Dec 09 '11 11:12

nick


4 Answers

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;
      }
}
like image 110
Farm Avatar answered Oct 22 '22 13:10

Farm


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
        }
    }
like image 31
Lalit Poptani Avatar answered Oct 22 '22 15:10

Lalit Poptani


You can reuse your listener:

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

phone.setOnClickListener(listener);
bookings.setOnClickListener(listener);
/*...*/
like image 27
Caner Avatar answered Oct 22 '22 14:10

Caner


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.

like image 24
anddev Avatar answered Oct 22 '22 15:10

anddev