전체 글 25

Kotlin에서의 Delegation Pattern(1)

Delegation Pattern 이름 그대로 해석해보자면, 위임 패턴으로 객체지향 프로그래밍 디자인 패턴중 하나로, 어떤 기능을 자신이 처리하지 않고 다른 객체에 위임을 시켜 그 객체가 일을 처리하도록 만들어주는 패턴입니다. 상속과 구성 Delegation pattern을 알기 위해선 먼저 상속(Inheritance)과 구성(Composition, 이하 컴포지션)에 대해서 알아두면 좋은데, 상속을 사용하는 이유는 1. 코드를 재사용 하기 위해서, 2. 변화에 대한 유연성 및 확장성이 증가함을 기대해서, 3. 개발 시간을 단축하기 위해서 입니다. 그런데 상속은 지나치게 상위 클래스에 대해 하위 클래스가 의존성을 띄고 있다는 점, 그래서 객체의 유연성이 매우 떨어진다는 점에서 컴포지션을 추천합니다. 컴포지..

Kotlin 2022.09.13

Fragment의 Lifecycle 잘 알고 있나요

서론 최근에 기본기를 다지다 보면서 Fragment의 Lifecycle에 대해서 다시 공부했었습니다. 그런데, 확실히 알고 나니 제 프로젝트에서 오동작하는 상황에서 어떠한 부분이 문제고, 어떻게 고쳐야 할지 빠르게 파악이 되고, 수정할 수 있는 "힘"이 생기는 것 같습니다. 저의 프로젝트에서 문제 상황을 먼저 보고, Fragment Lifecycle을 공부한 뒤, 해결해보는 시간을 가져보겠습니다. 문제 블로그 주인 seokzoo는 RecyclerView를 이용해 유저의 List를 LinearLayout 형식으로 보여주고 있다. 대세에 따라 Single Activity, Mutiple Fragment를 구현해주었고, RecyclerView를 보여주는 UserListFragment와 아이템을 클릭시에 상세 ..

Android 2022.09.13

AAC ViewModel 따라가기

서론 이번 포스트에서는 ViewModel을 사용은 하지만, 내부동작은 어떻게 이루어지는가에 대해서 잘 모르는 사람들을 위해 알아보려고 합니다(저포함)! 보통은 그냥 by viewModels()를 이용해 사용하는 방법만 알 뿐, 그 안에서는 어떤식으로 동작하는지는 크게 신경쓰지 않습니다. 그럼 이제 ViewModel에 대해서 먼저 알아본 뒤, 하나하나 따라가보겠습니다! 다만 이 포스트는 viewModels의 기본 사용법이므로, 아래와 같이 viewmodelFactory는 따로 만들어주지 않았습니다. viewModelFactory를 넣어주는 예시 private val githubViewModel: GithubViewModel by viewModels(factoryProducer = { GithubViewMo..

Android 2022.09.13

Coroutine과 Retrofit을 같이 사용하면 enqueue를 쓰지 않아도 되는 이유는?

이 포스팅을 작성하는 이유 안드로이드를 처음 접할 때 retrofit을 이용해 서버와 통신할 경우 아래와 같은 코드를 작성하게됩니다. interface UserApi { @GET("api/") suspend fun getUserList( @Query("page") page: Int, @Query("results") results: Int, @Query("seed") seed: Int, ): Call } ... NetworkManager.UserApi .getUserList(page, MainActivity.USER_COUNT, seed) .enqueue(object : Callback{ override fun onResponse(call: Call, response: Response) { // 통신 성공..

Android 2022.09.13

RecyclerView ListAdapter를 통한 DiffUtil 사용법

안드로이드 개발을 한다면 가장 많이, 자주 쓰이는 것들 중 하나가 RecyclerView일것이다. 이번 포스팅을 기회로 완벽하게 정리해두고 기억이 안나거나 참고할 때 볼 수 있도록 해야겠다. 1. 먼저 RecyclerView란? ListView는 스크롤하여 리스트 항목이 갱신될 때마다, 매번 아이템뷰를 새로 구성해야 했다. 하지만 리사이클러뷰는 이름 그대로 생성한 뷰를 "재활용"한다. 만약 10개의 리스트를 보여준다고 한다면 대략 17~20개정도의 뷰홀더 객체를 만든 뒤 사용자의 화면에서 벗어나는 경우 맨 위의 뷰가 다시 재활용(Recycle)되어 맨 밑으로 가 뷰의 데이터들이 bind된 뒤 다시 보여지게 된다. 2. RecyclerView를 구현하는데 필요한 요소 0.1 사용할 프래그먼트 or 액티비티..

Android 2022.09.13