
2022.04.01 - [Android] - Android RecyclerView - ConcatAdapter ConcatAdapter ConcatAdapter를 통해 하나의 RecyclerView에서 쉽게 여러 ViewType을 추가할 수 있습니다. 하지만 LayoutManager는 Adapter에 붙는게 아닌 RecyclerView에 붙기 때문에 하나의 LayoutManager만 사용할 수 있다는 단점이 있습니다. 만약 요구사항이 아래와 같다면? NestedScrollView ScrollView에 Horizontal부분과 Grid부분을 추가하고, Grid 영역 RecyclerView의 height를 wrap_content로 설정하면 해결할 수 있습니다. 하지만 ListView, RecyclerView..

Kotlin DSL DSL(Domain Specifit Language)은 특정 분야에 특화된 언어를 말합니다. Gradle은 Groovy라는 DSL을 사용하는데 KTS를 통해 Kotlin으로 Gradle을 구성할 수 있습니다. 특징 Groovy 언어로 매우 오랜 시간 잘 사용했고, 문제점이 없었기 때문에 굳이 KTS를 사용할 필요가 있을까 싶지만 가장 큰 장점은 Kotlin을 사용하는 점이라고 생각합니다. 다른 언어를 배울 필요없이 친숙하고 쉽게 구현할 수 있기 때문입니다. 친숙한 구문 컴파일 과정에서 에러 확인 Android Studio 적극 지원 하지만 장점만 존재하는 것은 아닙니다. 실제 Clean 작업 후 Build를 거치면 Groovy보다 느리다고 합니다.(링크) 적용 방법 1. buildSr..
ConcatAdapter RecyclerView 1.2.0에서 새롭게 출시한 어댑터입니다. 이름에서 알 수 있듯 여러 어댑터를 연결하는 역할을 합니다. 기존 어댑터의 문제점은 하나의 어댑터에서 여러 ViewHolder를 관리할 때 객체 지향의 의미가 퇴색되고 코드가 쉽게 더러워졌습니다. ConcatAdapter를 통해 하나의 RecyclerView에서 여러 ViewHolder를 쉽게 관리할 수 있고, 기존 Adapter를 연결할 수 있습니다. 사용법 사용법은 매우 간단합니다. 생성자로 vararg 형태로 기존 Adapter를 넘겨주면, 순서대로 RecyclerView에 표시됩니다. 또한 데이터가 변경됐을 때 adapter의 notifyDataSetChanged(), ListAdapter라면 submitL..
signingConfigs Android에서 Build를 할 때 Sining Key는 필수 사항이다. 물론 debug 모드로 빌드를 진행하면 Android Studio 내부에서 기본으로 제공하는 Key로 빌드를 하지만 앱을 배포하거나 BuildVariant를 release로 바꾸면 Key를 요구하며 때로는 debug Key를 개발자가 수정하는 경우가 생긴다. build.gradle 설정 signingConfigs 프로젝트에서 사용할 키를 signingConfig 함수를 통해 설정한다. build.gradle에 Key에 대한 정보를 바로 기입할 수 있지만, properties에 변수로 선언하여 사용할 수 있다. android { signingConfigs { debugKey { storeFile file(..

Build Variant 프로젝트를 진행할 때 테스트, SDK 지원 등 다양한 이유로 앱을 분기해서 관리할 경우가 있습니다. 여러 프로젝트를 만들고 코드를 공유해도 되지만 Gradle 설정으로 하나의 프로젝트에서 쉽게 관리할 수 있습니다. defaultConfig 다양한 BuildVariant에서 공통된 설정을 추가할 수 있습니다. android { defaultConfig { applicationId "com.taetae98.build" minSdk 31 targetSdk 32 versionCode 10000 versionName "1.00.00" buildConfigField "String", "BASE_URL", '"www.naver.com"' manifestPlaceholders["appLabel..

SourceSets 프로젝트를 진행하면 빌드 유형(debug, relase...), 제품 버전(유료, 무료...) 등 다양한 이유로 특정 부분의 소스 코드를 여러 버전으로 관리할 경우가 생깁니다. 간단하게 파일 복사나 Git Branch로 관리할 수 있지만 SourceSets을 사용하면 쉽게 관리할 수 있습니다. src/main 기본적으로 src/main에 코드를 작성하고 있습니다. main에는 모든 유형에 대해 공통적인 코드를 작성합니다. SourceSet 생성 app/src에 새로운 유형을 생성합니다. Gradle은 개발자가 src/main과 비슷한 방식으로 디렉토리를 구성할 것으로 예상합니다. 그렇기 때문에 다른 SourceSet을 생성할 때 src/main 같은 형식으로 디렉토리를 구성해야 합니다..

RxJava 예외 처리 기본적으로 Observer의 onError 함수를 통해서 에러를 처리할 수 있습니다. onError로 에러를 처리하는 경우 스트림은 데이터 발행을 중단하며 Observer는 onComplete 호출을 하지 못합니다. fun onError() { Observable.create { emitter -> emitter.onNext("Message 1") emitter.onNext("Message 2") throw Exception("Something Wrong") }.subscribe({ println(it) }, { println("Error : $it") }) } Message 1 Message 2 Error : java.lang.Exception: Something Wrong Rx..

Subject(링크) Subject는 데이터 발행과 구독을 한번에 할 수 있는 클래스입니다. onNext, onError, onComplete 함수로 데이터를 발행할 수 있으며, subscribe 함수로 데이터 구독을 할 수 있습니다. fun subject() { val subject = PublishSubject.create() subject.subscribe { println(it) } subject.onNext(1) subject.onError(Exception()) subject.onComplete() } AsyncSubject Subject에서 마지막으로 발행한 데이터만 받아옵니다. 완료되기 전 발행한 데이터는 무시합니다. 만약 오류가 발생하면 아무 값도 발행하지 않고 오류를 보냅니다. fun ..
- Total
- Today
- Yesterday
- Exception
- observable
- viewmodel
- Flutter
- DART
- 클린코드
- ViewModelStoreOwner
- Coroutine
- ConcatAdapter.Config
- Kotlin
- ViewModelProvider
- git
- clean code
- CancellationException
- TDD
- Widget
- null
- DSL
- isActive
- rxjava
- 코루틴
- ConcatAdapter
- 보이스카우트 규칙
- Flowable
- 연산자
- 클린 코드
- Android
- gradle
- commit
- 함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |