Reputation: 139
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
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
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
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
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
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