'Android - Using If statement when button is clicked to call a function
I have multiple onClickListeners that are called when I change the theme of my app. I am using images and colors to change the background of my app and the images and colors also change based on what theme you have chosen. There are two separate functions that are called in OnCreate i.e., setLayoutBGColor() and setLayoutBGImage(), whenever I change my background image or color. The problem is that I need to use an if statement that checks whether the user has clicked on one of the colors or images and then call the function based on that. I can't add the full onCreate function as it is exceeding the word limit
CreateNote class OnCreate function:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_create_note);
coordinatorLayout = findViewById(R.id.layoutBGcolor);
layoutCopyNote = findViewById(R.id.copyNote);
bgColorView = findViewById(R.id.bgColorImageView);
theme = Utils.getTheme(this);
if(theme == 1) {
selectedNoteColor = "#333333";
}
else{
selectedNoteColor = "#FFFFFF";
}
selectedColorIndex = 0;
selectedImagePath = "";
selectedNoteBgImage = "";
selectedImageIndex = 0;
initMisc();
//add an if else statement
setLayoutBGColor();
setLayoutBGImage();
}
InitMisc Function where all the listeners are mentioned:
private void initMisc() {
layoutMisc = findViewById(R.id.layoutMisc);
bottomSheetBehavior = BottomSheetBehavior.from(layoutMisc);
layoutMisc.findViewById(R.id.textMisc).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (bottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
} else {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
}
});
final ImageView noColor = layoutMisc.findViewById(R.id.no_color_note);
final ImageView imageColor1 = layoutMisc.findViewById(R.id.imageColor1);
final ImageView imageColor2 = layoutMisc.findViewById(R.id.imageColor2);
final ImageView imageColor3 = layoutMisc.findViewById(R.id.imageColor3);
final ImageView imageColor4 = layoutMisc.findViewById(R.id.imageColor4);
final ImageView imageColor5 = layoutMisc.findViewById(R.id.imageColor5);
final ImageView noBgImage = layoutMisc.findViewById(R.id.no_bg_image);
final ImageView bgImage1 = layoutMisc.findViewById(R.id.bgImage1);
final ImageView bgImage2 = layoutMisc.findViewById(R.id.bgImage2);
final ImageView bgImage3 = layoutMisc.findViewById(R.id.bgImage3);
final ImageView bgImage4 = layoutMisc.findViewById(R.id.bgImage4);
final ImageView bgImage5 = layoutMisc.findViewById(R.id.bgImage5);
theme = Utils.getTheme(this);
switch (theme) {
case 2:
layoutMisc.findViewById(R.id.no_color).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#FFFFFF";
selectedColorIndex = 0;
noColor.setBackgroundColor(R.drawable.bg_done_remove_day);
noColor.setImageResource(R.drawable.ic_done);
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
coordinatorLayout.setBackgroundColor(getResources().getColor(R.color.DefaultNoteColorDay));
}
});
layoutMisc.findViewById(R.id.color1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#FFFFFF";
selectedColorIndex = 0;
imageColor1.setImageResource(R.drawable.ic_done_create);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#CCF49E";
selectedColorIndex = 1;
imageColor1.setImageResource(0);
imageColor2.setImageResource(R.drawable.ic_done_create);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#F8A39D";
selectedColorIndex = 2;
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(R.drawable.ic_done_create);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#93CCC6";
selectedColorIndex = 3;
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(R.drawable.ic_done_create);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#EFD074";
selectedColorIndex = 4;
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(R.drawable.ic_done_create);
setLayoutBGColor();
}
});
if (availableNote != null && availableNote.getColor() != null && !availableNote.getColor().trim().isEmpty()) {
switch (availableNote.getColor()) {
case "#FFFFFF":
layoutMisc.findViewById(R.id.color1).performClick();
break;
case "#CCF49E":
layoutMisc.findViewById(R.id.color2).performClick();
break;
case "#F8A39D":
layoutMisc.findViewById(R.id.color3).performClick();
break;
case "#93CCC6":
layoutMisc.findViewById(R.id.color4).performClick();
break;
case "#EFD074":
layoutMisc.findViewById(R.id.color5).performClick();
break;
}
}
layoutMisc.findViewById(R.id.no_background).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#FFFFFF";
selectedColorIndex = 0;
noBgImage.setBackgroundColor(R.drawable.bg_done_remove_day);
noBgImage.setImageResource(R.drawable.ic_done);
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
coordinatorLayout.setBackgroundColor(getResources().getColor(R.color.DefaultNoteColorDay));
}
});
layoutMisc.findViewById(R.id.bgColorImage1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_1";
selectedImageIndex = 0;
bgImage1.setImageResource(R.drawable.ic_done_create);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_2";
selectedImageIndex = 1;
bgImage1.setImageResource(0);
bgImage2.setImageResource(R.drawable.ic_done_create);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_3";
selectedImageIndex = 2;
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(R.drawable.ic_done_create);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_4";
selectedImageIndex = 3;
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(R.drawable.ic_done_create);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_5";
selectedImageIndex = 4;
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(R.drawable.ic_done_create);
setLayoutBGImage();
}
});
if (availableNote != null && availableNote.getNote_background_image() != null && !availableNote.getNote_background_image().trim().isEmpty()) {
switch (availableNote.getNote_background_image()) {
case "background_image_1":
layoutMisc.findViewById(R.id.bgColorImage1).performClick();
break;
case "background_image_2":
layoutMisc.findViewById(R.id.bgColorImage2).performClick();
break;
case "background_image_3":
layoutMisc.findViewById(R.id.bgColorImage3).performClick();
break;
case "background_image_4":
layoutMisc.findViewById(R.id.bgColorImage4).performClick();
break;
case "background_image_5":
layoutMisc.findViewById(R.id.bgColorImage5).performClick();
break;
}
}
break;
default:
layoutMisc.findViewById(R.id.no_color).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#333333";
selectedColorIndex = 0;
noColor.setBackgroundColor(R.drawable.bg_done_remove);
noColor.setImageResource(R.drawable.ic_done);
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
coordinatorLayout.setBackgroundColor(getResources().getColor(R.color.DefaultNoteColor));
}
});
layoutMisc.findViewById(R.id.color1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#333333";
selectedColorIndex = 0;
imageColor1.setImageResource(R.drawable.ic_done_create);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#354A36";
selectedColorIndex = 1;
imageColor1.setImageResource(0);
imageColor2.setImageResource(R.drawable.ic_done_create);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#3E2C47";
selectedColorIndex = 2;
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(R.drawable.ic_done_create);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#26534F";
selectedColorIndex = 3;
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(R.drawable.ic_done_create);
imageColor5.setImageResource(0);
setLayoutBGColor();
}
});
layoutMisc.findViewById(R.id.color5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#000000";
selectedColorIndex = 4;
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(R.drawable.ic_done_create);
setLayoutBGColor();
}
});
if (availableNote != null && availableNote.getColor() != null && !availableNote.getColor().trim().isEmpty()) {
switch (availableNote.getColor()) {
case "#333333":
layoutMisc.findViewById(R.id.color1).performClick();
break;
case "#354A36":
layoutMisc.findViewById(R.id.color2).performClick();
break;
case "#3E2C47":
layoutMisc.findViewById(R.id.color3).performClick();
break;
case "#26534F":
layoutMisc.findViewById(R.id.color4).performClick();
break;
case "#000000":
layoutMisc.findViewById(R.id.color5).performClick();
break;
}
}
layoutMisc.findViewById(R.id.no_background).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteColor = "#333333";
selectedColorIndex = 0;
noBgImage.setBackgroundColor(R.drawable.bg_done_remove);
noBgImage.setImageResource(R.drawable.ic_done);
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
coordinatorLayout.setBackgroundColor(getResources().getColor(R.color.DefaultNoteColor));
}
});
layoutMisc.findViewById(R.id.bgColorImage1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_1_night";
selectedImageIndex = 0;
bgImage1.setImageResource(R.drawable.ic_done_create);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_2_night";
selectedImageIndex = 1;
bgImage1.setImageResource(0);
bgImage2.setImageResource(R.drawable.ic_done_create);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_3_night";
selectedImageIndex = 2;
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(R.drawable.ic_done_create);
bgImage4.setImageResource(0);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_4_night";
selectedImageIndex = 3;
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(R.drawable.ic_done_create);
bgImage5.setImageResource(0);
setLayoutBGImage();
}
});
layoutMisc.findViewById(R.id.bgColorImage5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedNoteBgImage = "background_image_5_night";
selectedImageIndex = 4;
bgImage1.setImageResource(0);
bgImage2.setImageResource(0);
bgImage3.setImageResource(0);
bgImage4.setImageResource(0);
bgImage5.setImageResource(R.drawable.ic_done_create);
setLayoutBGImage();
}
});
if (availableNote != null && availableNote.getNote_background_image() != null && !availableNote.getNote_background_image().trim().isEmpty()) {
switch (availableNote.getNote_background_image()) {
case "background_image_1_night":
layoutMisc.findViewById(R.id.bgColorImage1).performClick();
break;
case "background_image_2_night":
layoutMisc.findViewById(R.id.bgColorImage2).performClick();
break;
case "background_image_3_night":
layoutMisc.findViewById(R.id.bgColorImage3).performClick();
break;
case "background_image_4_night":
layoutMisc.findViewById(R.id.bgColorImage4).performClick();
break;
case "background_image_5_night":
layoutMisc.findViewById(R.id.bgColorImage5).performClick();
break;
}
}
break;
}
the two Functions:
private void setLayoutBGColor(){
coordinatorLayout.setBackgroundColor(Color.parseColor(getResources().getString(getColorCodeFromColorIndex(selectedColorIndex))));
bgColorView.setBackgroundColor(Color.parseColor(getResources().getString(getColorCodeFromColorIndex(selectedColorIndex))));
}
private void setLayoutBGImage(){
coordinatorLayout.setBackground(getResources().getDrawable(getImageCodeFromImageIndex(selectedImageIndex)));
}
Solution 1:[1]
Try to change your code, using this pattern:
private void setImageResources(int id) {
imageColor1.setImageResource(0);
imageColor2.setImageResource(0);
imageColor3.setImageResource(0);
imageColor4.setImageResource(0);
imageColor5.setImageResource(0);
theme = Utils.getTheme(this);
switch (id) {
default:
case R.id.no_color:
selectedNoteColor = theme==2? "#FFFFFF": "#333333";
selectedColorIndex = 0;
coordinatorLayout.setBackgroundColor(getResources().getColor(R.color.DefaultNoteColorDay));
return;
case R.id.color1:
selectedNoteColor = theme==2? "#FFFFFF": "#333333";
selectedColorIndex = 0;
imageColor1.setImageResource(R.drawable.ic_done_create);
break;
case R.id.color2:
selectedNoteColor = theme==2? "#CCF49E": "#354A36";
selectedColorIndex = 1;
imageColor2.setImageResource(R.drawable.ic_done_create);
break;
case R.id.color3:
selectedNoteColor = theme==2? "#F8A39D": "#3E2C47";
selectedColorIndex = 2;
imageColor3.setImageResource(R.drawable.ic_done_create);
break;
case R.id.color4:
selectedColorIndex = 3;
selectedNoteColor = theme==2? "#93CCC6": "#26534F";
imageColor4.setImageResource(R.drawable.ic_done_create);
break;
case R.id.color5:
selectedColorIndex = 4;
selectedNoteColor = theme==2? "#EFD074": "#000000";
imageColor5.setImageResource(R.drawable.ic_done_create);
break;
}
setLayoutBGColor();
}
and set listeners in initMisc:
View.OnClickListener listener = v-> setImageResource(v.getId());
layoutMisc.findViewById(R.id.no_color).setOnClickListener(listener);
layoutMisc.findViewById(R.id.color1).setOnClickListener(listener);
layoutMisc.findViewById(R.id.color2).setOnClickListener(listener);
layoutMisc.findViewById(R.id.color3).setOnClickListener(listener);
layoutMisc.findViewById(R.id.color4).setOnClickListener(listener);
layoutMisc.findViewById(R.id.color5).setOnClickListener(listener);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
