반응형
[MVVM 정복] 6. RecyclerView 적용해보기 (feat. 코틀린 함수)
Android, iOS 2020. 5. 18. 17:51

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 이번편까지 하면 코드는 다 입력한 것이다. 물론 MVVM을 정복한 것은 아니니 계속 긴장하고 있자. (나 스스로 한테 한 얘기) 먼저 MainSearchRecyclerViewAdapter를 만들자. 코드는 역시 내 Github에 있다. 블로그 포스팅 번호와 커밋 메시지의 번호가 동일하니 참고해서 학습하면 된다. 어댑터 만들면서 item_main_image, ic_image_black_24dp, item_ma..

[MVVM 정복] 5. View에 Koin으로 의존성 주입하기
Android, iOS 2020. 5. 18. 17:51

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 우선 MainActivity를 준비하자. 물론 activity_main.xml도 같이 세팅하자. 여기서 DataBinding이 나온다. 하지만 생각보다 단순한 개념이기에 참고 링크만 남겨둔다. MVVM에 데이터바인딩이 필수라고 하는 분이 있고 그렇지 않다고 얘기하는 분도 있었다. 필수라고 하는 분은 의존성이 낮아짐을 근거로 삼고, 필수가 아니라는 분은 디자인패턴적으로 봤을 때 없어도 되기 때문이라고 한다. ..

[MVVM 정복] 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin
Android, iOS 2020. 5. 18. 17:50

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com DI(Dependency injection)가 "의존성 주입"이라는 의미인 것은 많은 분들이 알고 있다. 그런데 의존성 주입이 무엇이냐고 물어보면 제대로 답할 수 있는 사람이 얼마나 될까? 그래서 알아보았다. DI, 넌 누구냐. 일단 의존성이 무엇인지 알아보자. 두 모듈의 연결, 두 클래스의 관계 의존성이 크다 == 결합도가 높다 '의존성이 큰게 왜??'라는 생각이 들 수 있다. 의존성이 크게 되면 독립성은..

[MVVM 정복] 3. Model과 리액티브 프로그래밍(Rx)
Android, iOS 2020. 5. 18. 17:47

이번편에서도 코드를 보면서 학습하길 권한다. (나도 학습하면서 포스팅 중) Model Model은 View에 표시할 데이터를 의미한다. DataModel이라고도 하며 DB, Network, SharedPreference 등 다양한 데이터 소스로부터 필요한 데이터를 준비한다. ViewModel에서 데이터를 가져갈 수 있게 데이터를 준비하고 그에 대한 "이벤트"를 보낸다. DataModel, DataModelImpl DataModel를 interface로 만들어서 구현부(DataModelImpl)를 분리시켰다. ViewModel이 데이터를 가지고 갈 수 있도록 준비되어 있다. 데이터를 가지고 올 소스를 API로 받아야하기에 KakaoSearchService를 구현했다. API의 파라미터 중 정해진 값만 전달..

[MVVM 정복] 2. SnackbarMessage, BaseViewModel, BaseActivity
Android, iOS 2020. 5. 18. 17:46

코드는 내 깃헙을 참고하면 된다. 커밋 로그와 블로그 포스팅 제목이 유사하게 따라간다. SnackbarMessage SnackbarMessage는 SingleLiveEvent이다. 앞 포스팅에 있는 그 SingleLiveEvent이다. Snackbar에 보여주고 싶은 메세지가 있다면 이 이벤트의 value에 원하는 메시지를 담으면 된다. class SnackbarMessage : SingleLiveEvent() { fun observe(owner: LifecycleOwner, observer: (Int) -> Unit) { super.observe(owner, Observer { it?.run { observer(it) } }) } } 위의 super.observe는 SingleLiveEvent에 있는 ..

[MVVM 정복] 1. LiveData와 SingleLiveEvent
Android, iOS 2020. 5. 18. 17:44

MVVM에서 데이터가 변경되는 시점에 UI가 변경되도록 하기 위해서 LiveData를 사용한다. 그런데 LiveData의 특성상 시도때도 없이 이벤트를 발생시킬 수 있기 때문에 SingleLiveEvent라는 것을 보통 만들어 쓴다. 여기서는 이 SingleLiveEvent의 용도를 확인해보자. LiveData. Data의 변경을 관측할 수 있는 (데이터가 변경되었을 때 감지가 됨) Data Holder 클래스. (데이터를 가지고 있음) 변경을 감지할 수 있는 이유는 컴포넌트의 생명주기를 LiveData가 알고 있기 때문이다. LiveData는 Observer 패턴을 가지기 때문에 데이터의 변경이 있을 시 콜백으로 받아서 처리할 수 있다. 옵저버 등록과 관련하여 다른 블로그에서 설명한 글을 가지고 와 보..

[MVVM 정복] 0. 어떤 순서로 개발할 것인가
Android, iOS 2020. 5. 18. 17:43

MVVM을 공부하려면 알아야하는 것이 한두개가 아니다. LiveData, ViewModel, Rx 등등 무엇부터 손을 대야할지 감도 잡히지 않는다. 나 역시 그렇다. 중심이 되는 자료가 필요할테고 거기서 시작하기로 했다. https://github.com/hongbeomi/HarryPotter https://github.com/5seunghoon/Kotlin-MVVM-Sample 포스팅 순서 1. LiveData와 SingleLiveEvent 2. SnackbarMessage, BaseViewModel, BaseActivity 3. Model과 리액티브 프로그래밍(Rx) 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin 5. View에 Koin으로 의존성 주입하기 6. RecyclerView 적용해보..

launchMode도 모르고 액티비티 인스턴스를 관리했다니...
Android, iOS 2020. 4. 19. 21:26

최근에 launchMode에 대해서 알고 있느냐는 질문을 받았다. "음? launchMode? 그게 뭔가요?" "그럼 액티비티 인스턴스는 어떻게 관리했나요?" "......" 생각해보니 내가 그런걸 염두하고 개발을 안했던거 같다. 늦기 전에 지금이라도 알아보자. launchMode로 액티비티 인스턴스 관리하기. 1. launchMode의 용도 우선 공식문서에는 뭐라고 했는지 들여다 보았다. 액티비티를 시작하는 방법에 대한 지침입니다. 인텐트를 처리하기 위해 액티비티를 호출할 때 발생하는 것을 결정하기 위해 Intent 객체에서 액티비티 플래그(FLAG_ACTIVITY_* 상수)와 함께 작동하는 4개의 모드가 있습니다. 항상 느끼지만 공식 문서의 번역은 조금 이해하기 힘들다. 다른 분들의 자료를 참고삼아 ..

어느 안드로이드 개발자의 두서없는 2019년 회고
Life 2020. 1. 16. 17:22

0. 자고로 개발자라면 "0"부터 시작하자 어떻게 써야 할지 감이 안 와서 일단 "0"부터 적어 보았다. 무의미하니깐 "0"이다. (아프니깐 청...) 1. 개발자로서 특별한 역할을 3번 받았다 특별하다는 게 무조건 좋다는 의미는 아니지만 개발자로서 계속 생존(?)한다면 2019년에 받은 3가지의 역할은 잊을 수 없을 것이다. 소셜 데이팅 서비스를 제공하는 회사에서의 안드로이드 개발자로서, K뷰티 커머스에서의 안드로이드 개발자로서, 그리고 동아리 넥스터즈에서의 운영진으로서 역할. 이 3가지 중심으로 썰을 풀어볼까 한다. 2. 이직을 결심했다. [혼자 식사를 할 수 있는 식당을 추천하는 서비스]를 제공하는 회사에서 안드로이드 앱을 개발했었다. 10명도 되지 않은 작은 스타트업이었지만 그렇기에 각자 "의쌰의..

하다하다 이제 이미지에서도 Crash가 나타난다. 나원참.
Android, iOS 2020. 1. 15. 17:36

작업을 하다보면 감도 안잡히는 에러 메시지를 볼 때가 있다. 아래 메시지가 그런 종류. // Crashlytics Caused by org.xmlpull.v1.XmlPullParserException: Binary XML file line #11: invalid color state list tag gradient 보자마자 '이게 뭐다냐'라고 생각하며 검색을 해보니... 벡터 이미지(VectorDrawable) 내부에 gradient 문제로 확인 되었다. 안드로이드 버전 7(누가)부터 fillColor 옵션을 지원하기에 그 이전 버전의 디바이스에서 충돌할 수 있다. 아래는 구글 문서에서 안내하는 fillColor 옵션의 설명이다. android:fillColor android:fillColor Speci..

728x90
반응형