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 |