좋아요 싫어요 버튼 만들기 (Android / java)

Dahyun Song·2021년 12월 23일
0


좋아요가 눌러진 모습


싫어요가 눌러진 모습

후기

단순 좋아요 버튼 하나만 구성했다면 큰 어려움이 없었겠지만, 하나의 버튼이 눌러졌을 때 다른 버튼은 취소가 되는 동시에 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을 변경해준다.

profile
안되면 될때까지!!

0개의 댓글