반응형
[안드로이드] BindingAdapter!! 두둥등장!!
Android, iOS 2021. 3. 17. 18:01

최근에 Koin을 다시 공부하면서 샘플 코드에 RecyclerView를 사용했었다. 그 때 DataBinding도 사용했는데 "DataBinding과 RecyclerView를 모두 사용할 것이면 BindingAdapter도 사용하는게 더 낫지 않을까?"라는 생각을 했었다. (물론 RecyclerView와 BindingAdapter는 직접적으로 관계는 없다.) 그래서... BindingAdapter 두둥 등장!!! (아래 샘플 코드는 필자의 github를 참고바란다.) 🤔 BindingAdapter ? BindingAdapter는 속성값을 설정하거나 이벤트리스너를 설정하는 것처럼 View(xml 레이아웃)의 attribute를 정의하고 로직을 작성하는데 사용된다. Android의 기본 UI들은 대부분 이미..

[안드로이드] 오락실용 코인 아님. 코틀린용 의존성 주입, Koin
Android, iOS 2021. 3. 7. 04:21

DI(의존성 주입)라고 들어보았나? 의존성 주입을 하게 되면 아래와 같은 이점을 얻게 된다. 의존 관계 설정이 실행시에 이루어지므로 컴포넌트 간의 결합도를 낮춘다. 코드 재사용성이 증가한다. 단위 테스트의 편의성을 높여 준다. 스코프를 사용하여 객체를 관리할 수 있다. 그래도 모르겠다면 아래를 읽어보자. [MVVM 정복] 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin 이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.. devvkkid.tistory.com..

[MVVM 정복] 7. 완성한 코드로 MVVM 분석해보기
Android, iOS 2020. 5. 18. 17:52

완성한 코드는 다음과 같다. (내가 드디어 해냈다. 캄.동.) https://github.com/conquerex/mvvm-template conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 앞으로 개발을 한다면 다음과 같은 시나리오일 것이다. (일종의 복습) class MainActivity : BaseActivity() { // 생략 override val viewModel: MainViewModel by viewModel() // 생략 override fun initDataBinding() { v..

[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 정복] 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에 있는 ..

728x90
반응형