당근마켓 클론 코딩


[필수] 메인 페이지

데미데이터 : 이미지 링크, 상품 리스트 링크

[필수] 상세 페이지

[선택] 스크롤 상단 이동(MainActivity)

[선택] 상품 삭제(Adapter)

[선택] 좋아요 기능(MainActivity & DetailActivity)

**[구조]
* MainActivity는 리사이클러뷰 외에서 일어나는 일들 처리
* Adapter는 리사이클러뷰에서 일어나는 일들 처리
* Main - Detail 간 data 이동은 Main에서**
1) class MainActivity
(1) onCreate 메소드
- recyclerview 바인딩
- ItemList 불러오기
- recyclerview adapter 연결
- adapter 항목 클릭했을 때 setOnItemClickListener 메소드 안에 adapter 메소드 중 onItemClick override하여
DetailActivity로 데이터 넘김
- 알림 이미지 클릭했을 때 setOnClickListener로 notification 메소드 실행
- floating action button
> fade in, fade out animation 생성
> recyclerview에 addOnScrollListener 메소드 안에 onScrolled 메소드 override 하여
스크롤 아래로 내릴 때만 버튼 보이도록 if 조건문 구현(dy > 0 일때가 스크롤 아래로 내리는 것)
- registerForActivityResult로 DetailActivity에서 데이터 받아옴(좋아요 기능)
(2) notification 메소드
- 알림 이미지 누르면 알림 생성
(3) onBackPressed 메소드
- 핸드폰 좌측 하단 백 버튼 누르면 '앱을 종료하시겠습니까?' 알림창 띄움 → 확인 누르면 앱 

2) class Adapter
(1) interface OnItemClickListener : 밑에 setOnItemClickListener이 OnItemClickListener를 상속받음
(2) setOnItemClickListener : MainActivity에서 DetailActivity로 넘어갈 때 사용
(3) onCreateViewHolder : recyclerview 안에 들어가는 레이아웃.xml binding // 처음 recyclerview가 생성될 때 호출
(4) onBindViewHolder
- Holder에서 binding한 변수들에 실제 들어갈 data 연결
(5) getItemCount : 메인 화면에서 보여줄 아이템 개수 지정(itemList.size)
(6) inner class Holder
- init 안에 setOnLongClickListener 호출, 길게 눌렀을 때 상품 삭제 dialog 뜨고 확인 누르면 삭제
- init 안에 setOnClickListener 호출, recyclerview 안 항목 클릭했을 때 클릭 이벤트 처리
- rvlistitem.xml에 있는 위젯들 binding으로 변수 연결

3) class DetailActivity
(1) onCreate
- intent로 parcelable 데이터 리스트 가져옴
- detail.xml에 있는 위젯들 binding으로 연결
- 좌측 상단 backbtn 눌렀을 때 setOnClickListener로 finish() 동작
- detail 페이지에서 하트 눌렀을 때 채워진 하트로 변경하는 로직 구성 & intent로 하트 채워졌다는 정보 MainActivity로 전달

4) data class ItemList - parcelize 상속
(1) object ItemListRepository 안에 getItemList 메소드 생성, dataList.add로 더미 데이터 채움