selector drawable을 두개 준비하시구요. 하나는 0 일 때, 다른 하나는 1일 때 보여줍니다. selector를 사용하는 이유는 그냥 이미지나 배경색을 바꾸면 버튼을 클릭효과가 반영되지 않거든요. Firebase를 읽어오는 부분은 이미 작성을 하셨을 테니 콜백 안에서
button.setBackground를 통해서 위에서 준비해둔 selector를 지정해주시면 됩니다.
// Java.
// 님에게 좀 더 적합한 클래스, 변수 이름을 사용하세요.
public enum ButtonState {
ZERO(R.drawable.one),
ONE(R.drwable.two);
@DrawableRes
private final int drawableRes;
public ButtonState(int drawableRes) {
this.drawableRes = drawableRes;
}
public int getDrawableRes() {
return this.drawableRes;
}
public static ButtonState of(int value) {
switch (value) {
case 0:
return ZERO;
case 1:
return ONE;
default:
throw IllegalArgumentException("Incorrect state:" + value);
}
}
}
// Activity or Fragment
int myVarilable = ...
try {
changeButtonBackground(ButtonState.of(myVariable))
} catch (IllegalArgumentException e) {
//님의 상황에 맞게 에러처리 하세요.
}
private void changeButtonBackground(ButtonState buttonSate) {
myButton.setBackground(buttonSate.getDrawableRes());
}
//.Kotlin
enum class ButtonState(@DrawableRes val drawableRes: Int) {
ONE(R.drawable.one),
TWO(R.drawable.two);
companion object {
fun of(value: Int): ButtonState {
return when (value) {
0 -> ONE
1 -> TWO
else throw IllegalArgumentException("Incorrect state: $value")
}
}
}
}
val myValue: Int = ...
try {
changeButtonBackground(ButtonState.of(myValue))
} catch (e: IllegalArgumentException) {
// 에러처리
}
private fun changeButtonBackground(buttonSate: ButtonState) {
myButton.background = buttonSate.drawableRes
}