Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준
- 스파르타내일배움캠프
- 자바
- 운영체제
- 소프트웨어
- 내일배움캠프
- 중심사회
- 프로그래머스
- wil
- 부트캠프
- 스파르타내일배움캠프TIL
- Flutter
- 스파르타내일배움캠프WIL
- 국비
- til
- Spring
- 99클럽
- 컴퓨터개론
- 컴퓨터구조론 5판
- 스파르타코딩클럽
- MySQL
- 항해
- 99일지
- 개발자스터디
- java
- AWS
- Python
- 개인공부
- 개발자블로그
- 코딩테스트
Archives
- Today
- Total
컴공생의 발자취
[AndroidStudio] 좋아요 싫어요 버튼 만들기 본문
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 |