좋아요가 눌러진 모습
싫어요가 눌러진 모습
단순 좋아요 버튼 하나만 구성했다면 큰 어려움이 없었겠지만, 하나의 버튼이 눌러졌을 때 다른 버튼은 취소가 되는 동시에 count가 올라가야하고, 버튼을 누르고 나왔다가 다시 들어왔을때 버튼이 계속 눌러져 있게 하기 위해 state를 부여해주는것이 다소 어려웠다.
private int likeCount = 0;
private int unlikeCount = 0;
private String likeAction = "";
private String unlikeAction = "";
Count와 Action의 초기값을 각각 지정해준다.
//좋아요 버튼
rdolike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(likeAction == "" && unlikeAction == ""){
likeCount += 1;
likeAction = "liked";
cntLike.setText(String.valueOf(likeCount));
cntUnlike.setText(String.valueOf(unlikeCount));
}else if(likeAction == "" && unlikeAction == "unliked"){
likeCount += 1;
unlikeCount -= 1;
likeAction = "liked";
unlikeAction = "";
cntLike.setText(String.valueOf(likeCount));
cntUnlike.setText(String.valueOf(unlikeCount));
}else if (likeAction == "liked" && unlikeAction == ""){
likeCount -= 1;
likeAction = "";
cntLike.setText(String.valueOf(likeCount));
cntUnlike.setText(String.valueOf(unlikeCount));
checkItem.clearCheck();
}
}
});
//싫어요 버튼
rdoUnlike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(unlikeAction == "" && likeAction ==""){
unlikeCount += 1;
unlikeAction = "unliked";
cntLike.setText(String.valueOf(likeCount));
cntUnlike.setText(String.valueOf(unlikeCount));
}else if(unlikeAction == "" && likeAction == "liked"){
unlikeCount += 1;
likeCount -= 1;
unlikeAction = "unliked";
likeAction = "";
cntLike.setText(String.valueOf(likeCount));
cntUnlike.setText(String.valueOf(unlikeCount));
}else if(unlikeAction == "unliked" && likeAction == ""){
unlikeCount -= 1;
unlikeAction = "";
cntLike.setText(String.valueOf(likeCount));
cntUnlike.setText(String.valueOf(unlikeCount));
checkItem.clearCheck();
}
}
});
ikeAction과 unlikeAction의 값의 따라 count와 action을 변경해준다.