Kotlin (16) 썸네일형 리스트형 [Kotlin] RecyclerView와 ViewModel 적용해보기 ViewModel을 학습한 내용을 이를 이전에 만들었던 FLO 어플에 적용하면서 이에 대해 제대로 학습하고, HiStory 어플에 적용하려고 한다. 그래서 이번에는 RecyclerView와 ViewModel에 대해 학습하여 이를 적용해보았다. //HomeFragment.kt val albumRecyclerViewAdapter = AlbumRVAdapter(homeViewModel.albumList) binding.homeTodayRecyclerView.adapter = albumRecyclerViewAdapter albumRecyclerViewAdapter.setMyItemClickListener(object : AlbumRVAdapter.MyItemClickListener{ override fun on.. [Codelab] Hilt와 DI에 대해 이해하기 목차 1. 공부 이유 2. Hilt의 사용법 3. 후기, 이후 계획 4. 참고문헌 1. 공부 이유 지난 학기 객체지향 프로그래밍 수업에서 의존성 주입(DI)에 대해 배웠다. 이에 대해 이해한 내용을 정리해보면, 객체들이 각각의 일을 수행하다보면 객체들 사이에 의존성이 생기게 된다. 의존성이 생긴다는 것은 한 클래스가 변화했을 때, 이와 의존관계가 있는 클래스에도 변경 사항이 생긴다는 것을 의미한다. 그렇게 된다면 변경 사항에 대응하기 위해 드는 시간이나 불편함이 생길 것이고 이를 의존성 주입으로 해결할 수 있는 것이다. 그래서 나는 의존성 주입을 객체가 하던 일을 대신해주는 무언가를 만들어서 객체가 이를 신경쓰지 않아도 되게 하는 것으로 이해했다. Codelab을 통해 학습하거나 예제 코드들을 보다보면 .. [Codelab] ViewModel에 대해 이해하기 목차 1. 공부 이유 2. ViewModel이란? 3. View와 ViewModel의 역할 4. 후기, 이후 계획 5. 참고문헌 1. 공부 이유 리팩토링하는 과정에서 ViewModel을 적용하려다보니 어느 부분에서 적용하고, 어떻게 적용할지에 대한 고민이 들었다. 이 과정에서 내가 ViewModel을 제대로 이해하지 못하고 있다는 생각이 들었고, 적용 이전에 이에 대해 더 공부해보는 시간을 가질 필요를 느껴 Codelab에서 관련 내용에 대한 글을 읽고 공부하는 시간을 가졌다. 참고 Codelab 링크 Store data in ViewModel (android.com) 2. ViewModel 이란? ViewModel은 데이터를 저장하는 안드로이드 아키텍처 구성요소 중 하나로 ViewModel에서 관리하는.. [HiStory 리팩토링] 3. 카카오 로그인 기능 적용(2) 목차 1. 토큰 발급 2. 토큰 삭제 3. 이후 계획 4. 참고문헌 이어서 카카오 로그인을 한 후, 발급받은 토큰을 통해 화면을 갱신하도록 했다. 이전 포스팅에서 livedata를 사용한다고 했지만, 카카오 SDK를 활용하면 더 쉽게 구현할 수 있어서 이를 통해 구현했다. 1. 토큰 발급 //LoginActivity.kt binding.loginKakaoIb.setOnClickListener { val callback: (OAuthToken?, Throwable?) -> Unit = { token, error -> if (error != null) { } else if (token != null) { exitLogin() } } if (UserApiClient.instance.isKakaoTalkLogi.. [HiStory 리팩토링] 2. 카카오 로그인 기능 적용 목차 1. 초기 세팅 2. 안드로이드 스튜디오에서의 세팅 3. 이후 계획 4. 참고문헌 이전에 개발 기간에 쫓겨 구현하지 못했던 소셜 로그인 기능을 추가하고자 한다. 1. 초기 세팅 KaKao Developer에서 앱을 추가해주어야 한다. 이때는 특별히 해줄 것 없이 설정을 완료해주게 되면 앱 키 목록이 나오는데 이 중 자신의 용도에 맞는 키를 선택하면 된다. 나는 안드로이드이기 때문에 네이티브 앱 키를 선택했다. 그 다음 카카오 로그인 설정을 들어가 활성화 시킨다. 활성화 시키지 않을 경우 카카오 로그인을 시도했을 때 KOE004 코드가 뜨게 된다. 그리고 플랫폼에 들어가서 키 해시 값을 입력해주어야 하는데, Android | Kakao Developers 문서 이 링크를 참고하면 쉽게 할 수 있다. .. [HiStory 리팩토링] 1. 리팩토링을 시작하다 목차 1. 첫 프로젝트 HiStory 2. 리팩토링을 하는 이유 3. BottomNavigation 수정 4. 참고문헌 1. 첫 프로젝트 HiStory HiStory는 UMC 1기 활동을 하며 처음으로 안드로이드 개발자이자 PM으로 진행했으며, 런칭까지 했던 프로젝트이다. 안드로이드 개발자 2명, 서버개발자 3명, 디자이너 1명이 팀이 되어 진행했다. 2. 리팩토링을 하는 이유 부끄럽지만, 당시는 런칭을 하는데에 급급해 구글링을 통해 앱이 굴러가게만 하는데에 집중했다. 그래서 발생한 결과가 왼쪽과 같은 모습이다. 지난 학기 객체지향프로그래밍 수업을 들으면서 설계를 한 후 진행한다면 개발이 얼마나 빠르게 진행될 수 있는지 경험할 수 있었다. (물론 설계가 잘못되었을 때는 수정사항이 많이 발생했지만..) 또.. [Kotlin] Custom Calendar Library(kizitonwose) 사용하기 ## 다이어리 프로젝트 with SandBurger [Kotlin] CosmoCalendar library 사용하기 (tistory.com) 지난 포스팅에서 cosmocalendar 라이브러리를 사용하여 calendar를 커스텀하는 작업을 진행했습니다. 하지만 커스텀하는 과정에서 저희 프로젝트에서 원하는만큼의 커스텀이 어렵다고 판단하여 새로운 라이브러리를 찾게 되었고, 그 결과 kizitonwose CalendarView 라는 라이브러리를 사용하게 되었습니다. 완성된 화면은 아래와 같습니다 CalendarFragment.kt class DayViewContainer(view : View) : ViewContainer(view) { val textView = ItemCalendarDayBinding.bin.. [Kotlin] 동기와 비동기 살펴보기 코드를 짜면서 계속해서 나의 부족함에 대해 생각했다. 현재 너무 주먹구구식으로 코드를 작성하고 있고, 팀에 안드로이드 개발자가 혼자이다 보니 코드에 대한 피드백을 받을 수 없어 실력이 늘지 않는다는 생각을 했다. 이 문제를 해결하기 위해 개발과 병행하며 기초를 공부해야겠다는 생각을 하였고, 마침 오늘 Room DB 관련하여 코드를 작성하며 비동기 처리에 대해 살펴볼 기회가 있었다. 동기, 비동기 동기란 이전 작업이 종료될 때까지 기다렸다가 다음 작업을 진행하는 것, 비동기란 이전 작업이 종료될 때까지 기다리지 않고 실행하는 것. 이렇게 보았을 때 비동기는 동시에 여러 작업을 처리할 수 있으니, 늘 비동기적으로 동작하도록 코드를 작성해야 하는 것인가? 라는 생각이 들었다. 내 생각은 우선 NO였다. 작업에.. 이전 1 2 다음