버튼별로 각각 선택 및 해제가 가능하도록 만들고 싶은데요
현재 만든 코드로는 독립적으로 수행되지 않고, 다른 버튼의 상태에 영향을 받는 것 처럼 보입니다.
예를 들면 (버튼1,2 순서는 상관없음)
- 버튼1을 첫번째 터치하면 선택이 되고 (선택이미지로 변경)
- 버튼2를 첫번째 터치하면 무반응, 두번째 터치시 선택이 됩니다.
- 두가지 다 선택된 상태에서도 버튼 1을 첫번째 선택하면 해제, 버튼2는 두번째 터치시 해제
해결하려고 며칠동안 구글링도 해보고 조건값들도 변경해봤는데 도무지 해결방법을 찾을 수가 없어서 질문드립니다.
질문1) 버튼이 다른 버튼 상태와 상관없이 선택/해제 가능
질문2) XML파일을 Selector를 이용하여 버튼별로 구성하려고 하는데 (예상버튼수 10개)
더욱 간편한 방법은 없을까요?
MainActivity.Java
public class MainActivity extends AppCompatActivity {
ImageButton imgbtn1;
ImageButton imgbtn2;
int i = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgbtn1 = (ImageButton) findViewById(R.id.imgbtn1);
imgbtn2 = (ImageButton) findViewById(R.id.imgbtn2);
Button.OnClickListener onClickListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.imgbtn1:
if (i % 2== 1) {
imgbtn1.setSelected(true);
i++ ;
} else {
imgbtn1.setSelected(false);
i--;
} break;
case R.id.imgbtn2:
if (i % 2 ==1) {
imgbtn2.setSelected(true);
i++;
} else {
imgbtn2.setSelected(false);
i--;
}break;
}
}
};
imgbtn1.setOnClickListener(onClickListener);
imgbtn2.setOnClickListener(onClickListener);
}
}
버튼별 XML 예시
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:drawable="@drawable/hair1"></item>
<item android:state_selected="true" android:drawable="@drawable/hair2"></item>
<item android:drawable="@drawable/hair1"/>
</selector>