컴공생의 발자취

[AndroidStudio] 좋아요 싫어요 버튼 만들기 본문

💚 AndroidStudio

[AndroidStudio] 좋아요 싫어요 버튼 만들기

MNY 2022. 12. 4. 15:30
728x90
반응형

캡스톤(1) 수업에서 앱을 만드는 도중에 좋아요&싫어요 버튼을 만들어야 했다.

현재 다른 팀원이 만들어놓은 좋아요&싫어요 버튼은 다음과 같이 만들어 놓았다. countup은 좋아요 버튼 클릭시 이벤트가 작동되고 countdown은 싫어요 버튼 클릭시 이벤트가 작동되도록 만들었다. 

 

현재 코드의 문제점

 

1. 좋아요&싫어요의 같은 버튼을 다시 클릭했을 때 개수가 되돌아가지 않았다. 취소가 안된다.

2. 좋아요를 클릭하여 좋아요 +1 싫어요 0인 상태에서 싫어요를 클릭하면 좋아요 1 싫어요 +1이 된다. 서로 다른 버튼 클릭시 서로 영향을 미치지 않아서 적용되지 않는다.  

 

 

현재의 좋아요&싫어요 코드

 

    // 좋아요 버튼 클릭시 이벤트
    public void countup(@NonNull final MainViewHolder holder, int position) {
        CardView cardView = holder.cardView;
        TextView likeCount = cardView.findViewById(R.id.likeCount);
        likeCount.setText(String.valueOf(mDataset.get(position).getlike() + 1));
    	}
        
    // 싫어요 버튼 클릭시 이벤트
    public void countdown(@NonNull final MainViewHolder holder, int position) {
        CardView cardView = holder.cardView;
        TextView likeCount = cardView.findViewById(R.id.likeCount);
        TextView unlikeCount = cardView.findViewById(R.id.unlikeCount);
        unlikeCount.setText(String.valueOf(mDataset.get(position).getlike() + 1));
        }

 

 

변경 사항

 

1. 좋아요&싫어요의 같은 버튼을 다시 클릭했을 때 개수가 되돌아간다. 취소가 가능하다.

2. 좋아요를 클릭하여 좋아요 +1 싫어요 0인 상태에서 싫어요를 클릭하면 좋아요 0 싫어요 +1이 된다. 서로 다른 버튼 클릭시 서로 영향을 미치고 적용된다. 

 

 

변경된 좋아요&싫어요 코드

 

초기값 지정

    private int addlikeCount = 0;
    private int addunlikeCount = 0;
    private String likeAction = "";
    private String unlikeAction = "";

 

좋아요&싫어요 전체 코드

     // 좋아요 클릭시 이벤트
     public void countup(@NonNull final MainViewHolder holder, int position) {
        CardView cardView = holder.cardView;
        TextView likeCount = cardView.findViewById(R.id.likeCount);
        TextView unlikeCount = cardView.findViewById(R.id.unlikeCount);

        if(likeAction == "" && unlikeAction == ""){
            addlikeCount += 1;
            likeAction = "liked";
            likeCount.setText(String.valueOf(mDataset.get(position).getlike() + addlikeCount));
            unlikeCount.setText(String.valueOf(mDataset.get(position).getUnlike() + addunlikeCount));

        }else if(likeAction == "" && unlikeAction == "unliked"){
            addlikeCount += 1;
            addunlikeCount -= 1;
            likeAction = "liked";
            unlikeAction = "";
            likeCount.setText(String.valueOf(mDataset.get(position).getlike() + addlikeCount));
            unlikeCount.setText(String.valueOf(mDataset.get(position).getUnlike() + addunlikeCount));

        }else if (likeAction == "liked" && unlikeAction == ""){
            addlikeCount -= 1;
            likeAction = "";
            likeCount.setText(String.valueOf(mDataset.get(position).getlike() + addlikeCount));
            unlikeCount.setText(String.valueOf(mDataset.get(position).getUnlike() + addunlikeCount));
        }
        int likenum = mDataset.get(position).getlike();
        mDataset.get(position).setlike(likenum);
        int unlikenum = mDataset.get(position).getUnlike();
        mDataset.get(position).setunlike(unlikenum);
    }
    
    // 싫어요 클릭시 이벤트
    public void countdown(@NonNull final MainViewHolder holder, int position) {
        CardView cardView = holder.cardView;
        TextView likeCount = cardView.findViewById(R.id.likeCount);
        TextView unlikeCount = cardView.findViewById(R.id.unlikeCount);

        if(unlikeAction == "" && likeAction ==""){
            addunlikeCount += 1;
            unlikeAction = "unliked";
            likeCount.setText(String.valueOf(mDataset.get(position).getlike() + addlikeCount));
            unlikeCount.setText(String.valueOf(mDataset.get(position).getUnlike() + addunlikeCount));

        }else if(unlikeAction == "" && likeAction == "liked"){
            addunlikeCount += 1;
            addlikeCount -= 1;
            unlikeAction = "unliked";
            likeAction = "";
            likeCount.setText(String.valueOf(mDataset.get(position).getlike() + addlikeCount));
            unlikeCount.setText(String.valueOf(mDataset.get(position).getUnlike() + addunlikeCount));

        }else if(unlikeAction == "unliked" && likeAction == ""){
            addunlikeCount -= 1;
            unlikeAction = "";
            likeCount.setText(String.valueOf(mDataset.get(position).getlike() + addlikeCount));
            unlikeCount.setText(String.valueOf(mDataset.get(position).getUnlike() + addunlikeCount));
        }
        int likenum = mDataset.get(position).getlike();
        mDataset.get(position).setlike(likenum);
        int unlikenum = mDataset.get(position).getUnlike();
        mDataset.get(position).setunlike(unlikenum);
    }

 

 

 

 

 

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

좋아요가 눌러진 모습싫어요가 눌러진 모습단순 좋아요 버튼 하나만 구성했다면 큰 어려움이 없었겠지만, 하나의 버튼이 눌러졌을 때 다른 버튼은 취소가 되는 동시에 count가 올라가야하고, 버

velog.io

 

728x90
반응형

'💚 AndroidStudio' 카테고리의 다른 글

[AndroidStudio] Flutter 설치  (0) 2023.03.06
[AndroidStudio] AndroidStudio 설치  (0) 2023.03.06
[FireStore] 데이터 가져오기(Java)  (0) 2023.01.05
[AndroidStudio] 디자인 변경  (0) 2022.11.30