음 한참 쓰다보니 조금 문제가 있을것 같은 부분이 보이긴하내요
public
void
onClick(View v) 내부에
titlebtn 을 사용하셨는데 이값은 계속 변한 값이라 마지막버튼만을 가리키고 있을 듯 하내요.
제생각엔 titlebtn --> v로 바꾸시는 것이 어떨지 합니다.
이건 제 개인적인 취합입니다.
저는 이럴때
Button a,b,c 이렇게 3가지 버튼을 다 따로 정의해서 사용합니다.
그리고 onClick함수는
메인 클래스인 MainActivity 에 정의하고
각 버튼의 setOnClickListener은 this로 넘겨줍니다. 그러면 버튼의 클릭이벤트 처리를 MainAcitivity에 넘기게 되며 메인이 onClick을 처리하게 되죠. 그리고 onClick함수는 파라미터로 view를 넘기니 이 view가 이벤트를 발생시킨 뷰니 그 view의 아이디 값이나 기타 값으로 각 view들을 구분합니다.
아래는 저도 그냥 대충 정리해본 것인데요 확인 저도 못해봤습니다.
Button titlebtn[arr.length];
for(int i = 0; i < arr.length; i++) {
titlebtn[i] = new Button(getBaseContext());
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams (LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
p.weight = 1;
titlebtn[i].setLayoutParams(p);
titlebtn[i].setBackgroundColor(Color.GREEN);
titlebtn[i].setText(arr[i]);
titlebtn[i].setTag(String.valueOf(i));
titlebtn[i].setTextColor(Color.WHITE);
titlebtn[i].setOnClickListener(this);
setTab();
headerlinear.addView(titlebtn);
}
@Override
public void onClick(View v) {
int index = Integer.parseInt(String.valueOf(v.getTag()));
System.out.println(index);
// 눌러진 뷰의 색상을 변경하고 싶을때
switch (index) {
case BEST:
v.setBackgroundColor(Color.GREEN);
v.setText(Color.WHITE);
break;
case NEW:
v.setBackgroundColor(Color.GREEN);
v.setText(Color.WHITE);
break;
case ROCKET:
v.setBackgroundColor(Color.GREEN);
v.setText(Color.WHITE);
break;
default:
break;
}
}