목록전체 글 (44)
기록장
이번 포스팅은 Navigation Component를 이용하여 하단 네비게이션 바를 구현해보고, 각 프래그먼트 간 데이터를 공유하는 방법도 알아보도록 하겠습니다. 네비게이션 컴포넌트는 액티비티 하위에 있는 프래그먼트들 사이의 호출 및 상호작용을 도와주는 컴포넌트입니다. 기존 프레그먼트를 사용하면서 구현해 온 것 들을 조금 더 유연하게 처리할 수 있도록 해주는 것 입니다. - 기존 프래그먼트 간 전환에서 Callback을 만들어 프래그먼트 상위에 있는 액티비티에서 Callback을 구현해준 후 프래그먼트를 교체해 주는 형식으로 사용한다던지, 애니메이션을 직접 넣어주어야 한다던지, Bundle을 이용하여 데이터를 주고 받는다던지 등 의 작업들에 대한 솔루션을 제공해줍니다. 네비게이션을 사용하는데 있어서 중요..
이번 포스팅에서는 Databinding + LiveData + ViewModel + Room 을 결합하여 이것을 MVVM 패턴으로 작성하는 예제를 진행합니다. 저도 공부를 하며 이해한 바탕으로 코드를 작성하는 것이라 MVVM 패턴에 대해 잘못된 점이 있을 수 있습니다. 혹시나 보시고 의견이 있으시면 코멘트 부탁드립니다. 먼저 MVVM 패턴은 View, ViewModel, Model로 View는 ViewModel을 알지만, ViewModel은 View를 모르게 하고, ViewModel은 Model을 알지만, Model은 ViewModel을 알 수 없도록 하여 서로에 대한 분리를 확실하게 할 뿐만 아니라 이로 인한 유지보수성을 높여줍니다. 그림으로 보면 이렇습니다. View는 UI 부분을, ViewModel..
wooooooak.github.io/kotlin/2019/08/25/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%BD%94%EB%A3%A8%ED%8B%B4-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0/ 코틀린 코루틴(coroutine) 개념 익히기 · 쾌락코딩 코틀린 코루틴(coroutine) 개념 익히기 25 Aug 2019 | coroutine study 앞서 코루틴을 이해하기 위한 두 번의 발악이 있었지만, 이번에는 더 원론적인 코루틴에 대해서 알아보려 한다. 코루틴의 개념이 정확 wooooooak.github.io
이번 포스팅에서는 Room에 대한 설명은 하지 않습니다. Room을 처음 접하시는 분들은 아래 링크를 참고해주시면 감사하겠습니다. edit0.tistory.com/48 [코틀린] Room (SELECT, INSERT, UPDATE, DELETE) 이번 포스팅에서는 안드로이드 내부 데이터베이스 Room에 대해 알아보도록 하겠습니다. 다들 아시겠지만, 데이터베이스는 기본적으로 데이터를 담아두고 있는 공간입니다. 그리고 이 데이터를 S edit0.tistory.com 오늘은 바로 이전 포스팅에서 다루었던 Room 코드를 ViewModel, LiveData, DataBinding 을 적용하여 바꿔보도록 하겠습니다. 그래들.app 설정 plugins { id 'com.android.application' id '..
이번 포스팅에서는 안드로이드 내부 데이터베이스 Room에 대해 알아보도록 하겠습니다. 다들 아시겠지만, 데이터베이스는 기본적으로 데이터를 담아두고 있는 공간입니다. 그리고 이 데이터를 Select하여 필요한 곳에 보여줄 수 있고, 공간 안에 있는 데이터를 변경, 삭제, 수정 할 수도 있습니다. 외부 데이터베이스가 있으면 굳이 왜 사용하는지 의문을 가지실 수 도 있습니다. 예를 들어, 카카오톡과 같은 메신저 앱은 네트워크가 연결되어 있지 않으면 메신저를 보낼 수 없습니다. 그러나 네트워크가 끊기기 전까지의 내용을 내부 DB에 저장하고 있으므로 네트워크가 없어도 지난 메신저들을 가져와 사용자에게 보여줄 수 있습니다. (물론 카카오톡에서 이렇게 하는지는 모르겠지만, 예를 들어 본 것 입니다..) 그리고 안드로..
바로 이전 포스팅에서는 데이터바인딩과 뷰모델에 대해서 알아보았습니다. 라이브데이터가 나오긴 했었지만 거의 설명이 없었습니다. 그래서 이번에는 데이터바인딩, 뷰모델과 함께 라이브데이터와 바인딩어댑터를 알아보도록 하겠습니다. 라이브데이터는 데이터가 변하게 되었을 경우를 감지하여 콜백해주는 특징을 가지고 있습니다. 뭔가 변화를 감지해서 나에게 알려준다니 UI 업데이트를 할 경우 편할 것 같은 느낌이 듭니다. 라이브데이터의 몇가지 장점을 알아보도록 하겠습니다. 1. 사용하고 있는 액티비티의 Lifecycle을 알고 있기 때문에 메모리 누수를 방지할 수 있습니다. 2. UI 업데이트를 바로바로 해줄 수 있기 때문에 최신 데이터를 바로 반영할 수 있습니다. 3. 데이터 변화에 따라 Observer 객체에 알려주기 ..
Databinding은 말그대로 데이터를 묶는 의미로, XML(UI)과 데이터(ViewModel 내)를 결합하여 사용할 수 있도록 도와주는 라이브러리입니다. 물론 UI를 담당하는 Java나 Kotlin 소스 코드에서 데이터나 UI 업데이트를 해주어도 되지만, ViewModel과 함께하는 데이터바인딩에는 몇 가지 장점이 있습니다. 1. xml 을 보고 어떤 데이터가 있는지 유추하기 편하므로 코드 보기가 편해지고 UI를 담당하는 코드량도 줄일 수 있습니다. 2. findViewId()를 사용하지 않고 xml에 접근하여 데이터를 업데이트 할 수 있습니다. 3. 데이터 변화에 대해 UI에 즉시 적용할 수 있습니다. 4. 유지관리, 앱 성능 향상, 메모리 누수 및 Null 포인터 예외를 방지할 수 있습니다. 이러..
람다는 기존의 코딩 방식보다 조금 더 간결하게 표현할 수 있도록 도와주는 표현식입니다. 처음 람다를 접하게 되면 이걸 굳이 헷깔리게 이렇게 사용해야 하나 싶기도 하겠지만, (뭐든) 익숙해지면 스스로도 편하고 코드도 기존보다 간결해져서 좋을 것이라 생각됩니다. 코틀린에서 매개변수로 함수를 전달받고, 매개변수로 함수를 반환하는 고차 함수에도 람다 개념이 필요하므로 잘 알아두는 것을 권장합니다. 이 포스팅은 기본적인 람다 표현 방식을 소개합니다. fun add(x:Int, y:Int): Int{ Log.i("TAG", "${x+y}") return x + y } var result1 = add(1,10) 위 코드는 흔히 사용할 수 있는 함수 형태입니다. add라는 함수가 하나있고, Int타입의 인자 x와 y를..