조각들

1주차

 

<필수>

registerForActivityResult

putExtra

토스트 메세지 띄우기

EditText에서 inputType을 조절해 입력된 비밀번호 안 보이게 하기

스낵바 띄우기

회원가입 성공 조건 걸고 충족 시 액티비티 전환

constraintDimensionRatio

 

<심화>

chain

ConstraintLayout Flow

 

<도전>

SharedPreference를 활용해서 자동 로그인 구현

홈화면에서 뒤로 가기를 누르면 로그인 화면으로 넘어가지 않고 바로 앱이 종료되게 하기

(Hint : Intent Flags, Activity Task)

 


2주차

 

<필수>

Multi-View Type RecyclerView를 힌트삼아 하단으로 스크롤 할 때 헤더(TextView)도 같이 따라 내려가게 하기

 

<심화>

바텀네비게이션에서 홈 element가 눌려져있을 때 한 번 더 누르면 상단으로 갈 수 있게 하기 (Scroll To Top)

(Hint : BottomNavigation.setOnNavigationItemReselectedListener)

 

Fragment 생명주기 알아보기

 

NotifyDataSetChanged를 사용했을 때 리사이클러뷰에서 어떤 문제가 생길 수 있고 이를 개선한 여러 기능들 중 하나를 활용하여 리사이클러뷰의 성능을 개선해보기

 

RecyclerView-Selection 라이브러리를 사용해서

- 리사이클러뷰 내 아이템 다중선택 구현해보기

- 선택된 아이템 뷰에 선택 효과 주기

- 특정 버튼을 눌렀을 때 선택된 아이템들이 삭제될 수 있게 하기

 

<도전>

json 포맷의 데이터를 파싱해서 리사이클러뷰에 뿌려주기

 


4주차

 

<필수>

레트로핏을 활용해서 실제 회원가입/로그인 기능 구현하기

* kotlinx.serialization를 활용해야 함

 

모든 입력값을 받으면 회원가입 버튼을 누를 수 있게 하기

 

GET으로 API에서 유저데이터를 받아오고 이를 리사이클러뷰에 뿌려주기

 

<심화>

카카오 검색 API를 활용하기

- 키워드를 입력하고 검색 버튼을 누르면 통신이 이루어지는데 이때의 response를 리사이클러뷰에 반영하기

- 검색 결과가 없다면 Empty UI로 대체하기

 

코루틴으로 서버 통신하기

 

OkHttp Loggin Interceptor 활용하기

- Logging Interceptor를 활용하여 서버 통신의 Reqeust/Response를 Logcat에 띄울 수 있게 하기

 

<도전>

페북이나 인스타에서의 실시간 검색을 Debounce(Throttle) Search라고 하는데 이 기능에 대해 조사해보고 직접 구현해보기

 


6주차 

 

<필수>

4주차에 작성했던 서버 통신 로직을 뷰모델을 활용해서 View와 분리해보기

회원가입/로그인 조건 설정하고 충족되지 않았을 경우 경고 문구 띄우기 및 버튼 비활성화

(Hint : LiveData의 map)

 

<심화>

합동세미나 때 작성한 코드들을 UI Layer로 분리해보기

EditText에서 데이터를 받아올 때 addTextChangeListener를 쓰지 말고 양방향 databinding으로 코드 로직 개선해보기

 

로딩 뷰 사용하기

- 서버통신 요청을 하고 응답 받기 직전까지 로딩 뷰를 계속 보여주면 된다

- 응답 요청 성공 시 결과를 보여주고 실패 시 빈화면 혹은 실패 화면 보여주기

 

<도전>

이번 과제의 ViewModel 로직에서 서버 통신 로직을 추상화해서 Data Layer를 구현해보기

 


7주차

 

<필수>

API를 활용해서 멀티파트 서버통신해보기

 

'Android > 공부' 카테고리의 다른 글

retrofit의 비동기 처리  (0) 2024.04.29
Flow  (2) 2024.03.14
Repository의 효용에 대한 고찰  (0) 2023.03.16
[공부] Github Action CI  (0) 2023.03.04
[공부] MVVM, ViewModel, LiveData, DataBinding, Fragment  (1) 2023.01.21