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 | 29 | 30 | 31 |
Tags
- 스파르타코딩클럽
- 프로그래머스
- 개발자스터디
- 국비
- 개인공부
- 부트캠프
- 운영체제
- 스파르타내일배움캠프
- 내일배움캠프
- 스파르타내일배움캠프TIL
- wil
- 99일지
- MySQL
- 컴퓨터개론
- 99클럽
- 코딩테스트
- Python
- 스파르타내일배움캠프WIL
- 백준
- java
- Flutter
- 중심사회
- 항해
- 자바
- 소프트웨어
- 개발자블로그
- til
- Spring
- 컴퓨터구조론 5판
- AWS
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);
}
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 |