굉장히 간단한 코든데 오랜만에 직접 짜려하면 헷갈릴때가 있어서 정리해놓는다.

여러번 작성해봤는데도 머리가 기억안나는거보면 머리가 나쁜것같다ㅜㅜ

다시는 볼 일이 없길 바라며...



* thumb_up.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:drawable="@drawable/ic_thumb_up"/>
<item android:state_selected="true" android:drawable="@drawable/ic_thumb_up_selected"/>
</selector>


우선 버튼의 선택여부에 따라 다른 drawable을 적용시킬 수 있도록 xml파일을 하나 생성하여 state_selected 여부에 걸맞는 drawable을 지정해준다.



* activity_main.xml


<Button
android:id="@+id/button_mainactivity_thumbs_up"
android:layout_width="28dp"
android:layout_height="28dp"
android:background="@drawable/background_selector_thumb_up" /> // 위에서 만든 xml파일 지정!

// 위의 버튼과 연계된 텍스트뷰. 정수값이 적혀있고, 버튼이 선택되면 값이 1증가, 선택취소되면 1감소한다.
<TextView
android:id="@+id/textview_mainactivity_thumbs_up_count"
...
android:text="15"
... />



* MainActivity.java 소스코드

// 위의 버튼에 대한 onClickListener 설정하는 코드

// 핵심은 view.isSelected() 를 활용하여 선택여부에 따른 코드를 작성한다는 것. 아래의 코드내용은 중요치않음


button_thumbs_up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

view.setSelected(!view.isSelected()); // up버튼 선택여부 반전시키기

if(view.isSelected()){ // 현재 up버튼이 선택된 상황
if(button_thumbs_down.isSelected())
// 이미 down버튼이 선택되어 있었다면, up수 늘리기 전에 down버튼 선택취소
button_thumbs_down.callOnClick();

// 현재의 up개수 파악해서 +1 된 값으로 재설정
int count = Integer.parseInt(tv_thumbs_up_count.getText().toString());
tv_thumbs_up_count.setText(Integer.toString(++count));
}
else{
// 현재의 up개수 파악해서 -1 된 값으로 재설정
int count = Integer.parseInt(tv_thumbs_up_count.getText().toString());
tv_thumbs_up_count.setText(Integer.toString(--count));
}
}
});


+ Recent posts