본문 바로가기
반응형

Kotlin20

[Android] MVVM 패턴 및 Clean Architecture, Android Jetpack 적용 예제 개요 이번 포스팅에서는 Android에서 많이 애용하는 설계 패턴인 MVVM과 Clean Architectrue, Android Jetpack을 사용하여 만든 프로젝트를 소개하려고 합니다. Open API의 한 종류인 omdbapi를 사용하여 만들었습니다. 로그인 시 하루에 1,000건까지 무료로 사용할 수 있습니다. https://www.omdbapi.com/ OMDb API - The Open Movie Database www.omdbapi.com 해당 프로젝트의 이름은 MovieBrowser이고 간단한 영화 검색 기능과 즐겨찾기 기능을 사용할 수 있습니다. 프로젝트에 Clean Architecture를 적용하였고 각 Layer는 다음과 같은 종속성을 가지고 있습니다. Data와 Domain Laye.. 2022. 11. 2.
[Kotlin] Data Class 이해하기 Data Class는 보통 네트워크 통신이나 DB 모델을 만들 때 주로 사용합니다. 오늘은 이 Data Class가 무엇이고 일반적인 Class랑 무슨 차이가 있는지 알아보겠습니다. Data Class란? 데이터 클래스는 데이터를 보관하기 위해 만들어진 클래스입니다. 데이터 클래스는 toString(), hashCode(), equals(), copy()메소드를 자동적으로 만들어줍니다. 아래와 같이 정의할 수 있습니다. data class User(val name: String, val age: Int) Data Class 특징 ⑴ 데이터 클래스의 생성자는 1개 이상의 프로퍼티를 선언해야 한다. ⑵ 데이터 클래스 앞에 abstract, open, sealed, inner를 붙일 수 없다. ⑶ 데이터 클래.. 2022. 5. 23.
[Android] LiveData에 대해 알아보자 앞선 글에서 ViewModel에서 알아보았습니다. 이제 우리는 ViewModel이 어떤 역할을 하는지 알고 있습니다. ViewModel을 통해 UI 관련 데이터를 관리해주고 View에 데이터를 그려줄 수 있다는 것을 압니다. 하지만 여기서 문제가 생깁니다. 한 번 그려진 View는 데이터가 변화했다고 일반적으로 다시 그려주지 않습니다. 그렇다고 Activity나 Fragment를 다시 그리기에는 불필요한 비용이 듭니다. 그렇다면 데이터의 변경에 따라 즉각적으로 View의 일부분만을 갱신해줄 수 있는 방법이 무엇이 있을까? 그래서 AAC에서 LiveData를 사용해서 해당 문제를 해결해줄 수 있습니다. (물론 현재는 StateFlow를 많이 사용하는 것 같습니다.) LiveData 정의 LiveData의 .. 2022. 5. 10.
[Android] ListAdapter에서 submitList()가 동작하지 않는 이유 우리는 ListAdapter를 통해 효과적으로 RecyclerView의 데이터를 갱신할 수 있다. 그리고 새로운 데이터를 갱신할 때 submitList() 이용한다. 하지만 분명 데이터는 변경이 되었지만 실제적으로 RecyclerView에 갱신이 안 되는 경우가 있다. 그 이유는 submitList()를 보면 알 수 있다. Why? submitList()를 타고 가다보면 다음과 같은 코드가 있다. (AsynListDiffer.java 안에 submitList 함수) if (newList == mList) { // nothing to do (Note - still had to inc generation, since may have ongoing work) if (commitCallback != null) .. 2022. 3. 10.
[Android] ViewModel 에서 Activity, Fragment 데이터 공유하기 토이 프로젝트를 진행하면서 Android Navigation을 사용했는데 하나의 Activity에 여러 개의 Fragment가 종속되다 보니 데이터를 같이 공유할 필요가 있어서 방법을 찾아보았다. 찾아보니 ViewModel을 통해 Activity와 Fragment 간에 데이터 공유가 가능하다고 하여 적용을 해보았다. 📄 MainActivity.kt class MainActivity : AppCompatActivity() { private val foodViewModel : FoodViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentVie.. 2022. 2. 16.
[알고리즘 / Kotiln] 프로그래머스 - 수식 최대화 (2020 카카오 인턴십) 그동안 조금 공부를 게을리했던 것 같아서 다시 의지를 불태우기 위해 오랜만에 책상에 앉아서 프로그래머스를 들어갔다. 새로운 문제를 풀기보다는 예전에 풀어봤던 정확히는 눈으로 보았던 카카오 인턴십 문제를 다시 풀어보기로 했다. 1년 전에는 풀다가 포기한 문제였는데 다시 풀어보려니 왠지 모르게 긴장이 되었다. 이제부터라도 일주일에 최소 1개의 문제 푸는 습관을 들여야겠다. 수식 최대화 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어.. 2022. 2. 8.
반응형

loading