๊พธ์ค€ํ•จ์ด ์ง„๋ฆฌ๋‹ค!!

์–ด์ œ๋ณด๋‹ค ๋ฐœ์ „ํ•œ ์˜ค๋Š˜์ด ๋˜๊ณ ํ”ˆ ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ์˜ ๋ธ”๋กœ๊ทธ

Android/Kotlin 22

[Kotlin][Android] Base RecyclerView Adapter ๋งŒ๋“ค๊ธฐ (feat. Android TV List ๊ตฌํ˜„ํ•˜๊ธฐ)

์•ˆ๋…•ํ•˜์„ธ์š” ๋„ˆ๋ฌด ์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ…์„ ์˜ฌ๋ฆฌ๋„ค์š”!! ํ•œ๋™์•ˆ ํšŒ์‚ฌ์—์„œ ๋ฆฌํŒฉํ† ๋ง ๋•Œ๋ฌธ์— ๋„ˆ๋ฌด ์ผ์ด ๋ฐ”๋นด๋„ค์š”.. ์ด์ œ ๋‹ค์‹œ ๊พธ์ค€ํžˆ ํฌ์ŠคํŒ… ์˜ฌ๋ ค๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ . . ์ œ๊ฐ€ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ํŠน์„ฑ์ƒ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ์š”! ๊ฒฐ๊ตญ, ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๋“ค์— ๋™์ผํ•œ ๋™์ž‘์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒผ๊ณ , ๋งค๋ฒˆ ๋™์ž‘๋“ค์„ ์ถ”๊ฐ€ํ•˜๋‹ค ๋ณด๋‹ˆ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ๋ฐœ์ƒํ•˜์—ฌ ๊ฐ Adapter์˜ BaseClass๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๊ด€๋ จํ•ด์„œ ๊ณต์œ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! 1. BaseViewHolder ๋งŒ๋“ค๊ธฐ abstract class BaseViewHolder(binding: VB) : RecyclerView.ViewHolder(binding.root) { abstract val binding: VB a..

Android/Kotlin 2024.01.12

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ ENUM์— ๋Œ€ํ•ด์„œ(IntDef , StringDef์˜ ์‚ฌ์šฉ๋ฒ•)

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ํšŒ์‚ฌ์—์„œ ์—…๋ฌด๋ฅผ ํ•˜๋˜ ์ค‘ enum class ์‚ฌ์šฉ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์œผ๋ฉฐ ์ƒˆ๋กญ๊ฒŒ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ @IntDef , @StringDef์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ํฌ์ŠคํŒ… ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜Ž Kotlin ๋ฐ Java์—์„œ ๊ณ ์ •๋œ ๊ฐ’์„ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ๋กœ ์ƒ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ƒ์ˆ˜๋“ค์„ ํƒ€์ž…์œผ๋กœ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„๋•Œ๋Š” enum class๋ฅผ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด๋“ค ์žˆ์—ˆ์„ ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Android์—์„œ enum class๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์•ฑ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๊ณ  ํผํฌ๋จผ์Šค์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, TV๋‚˜ AVN๊ฐ™์€ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋Š” ๊ธฐ๊ธฐ์—์„œ๋Š” ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! (์ฐธ๊ณ ์ž๋ฃŒ๋Š” ์•„๋ž˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.) Android Perfo..

Android/Kotlin 2023.07.10

[Kotlin][Android] SharedFlow์™€ StateFlow ํ™œ์šฉํ•˜๊ธฐ (feat. UIState ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ‘œ์‹œํ•˜๊ธฐ)

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ LiveData๋ฅผ Coroutine Flow๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š” ๊ด€๋ จ ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š” :) [Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Coroutine Flow ์ ์šฉํ•˜๊ธฐ (2) ( LiveData๋ฅผ Flow๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ : LiveData ์™€ Flow ๋น„๊ต ์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด LiveData๋ฅผ Flow๋กœ ์ด์ „ํ•˜๋Š” ๊ณผ์ •์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, LiveData์™€ Flow์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ๋„ ํ•จ๊ป˜ ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค ๐Ÿ˜ƒ ์ด์ „ ํฌ์ŠคํŒ…์€ ์•„ devyo-111commit.tistory.com ์˜ค๋Š˜์€ SharedFlow์™€ StateFlow๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ™”๋ฉด์„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š”์ง€ UIState๋กœ ๊ด€๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ..

Android/Kotlin 2023.07.05

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Coroutine Flow ์ ์šฉํ•˜๊ธฐ (2) ( LiveData๋ฅผ Flow๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ : LiveData ์™€ Flow ๋น„๊ตํ•˜๊ธฐ )

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด LiveData๋ฅผ Flow๋กœ ์ด์ „ํ•˜๋Š” ๊ณผ์ •์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, LiveData์™€ Flow์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ๋„ ํ•จ๊ป˜ ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค ๐Ÿ˜ƒ ์ด์ „ ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค. ๐Ÿ™ [Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Coroutine Flow ์ ์šฉํ•˜๊ธฐ (1) (๋„คํŠธ์›Œํฌ ํ†ต์‹  Flow๋กœ ์ด์ „ํ•˜๊ธฐ) ์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ์•ˆ๋“œ๋กœ์ด๋“œ MVVMํŒจํ„ด์—์„œ Flow๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜Ž Flow์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค ๐Ÿ™ [Kotlin] ์ฝ”ํ‹€๋ฆฐ Coroutine์— ๋Œ€ํ•˜์—ฌ (3) - devyo-111commit.tistory.com LiveData๋ฅผ Flow๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ์— ์•ž์„œ ๋‘˜์˜ ์ฐจ์ด์ ๊ณผ ์™œ Flow..

Android/Kotlin 2023.03.23

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Coroutine Flow ์ ์šฉํ•˜๊ธฐ (1) (๋„คํŠธ์›Œํฌ ํ†ต์‹  Flow๋กœ ์ด์ „ํ•˜๊ธฐ)

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ์•ˆ๋“œ๋กœ์ด๋“œ MVVMํŒจํ„ด์—์„œ Flow๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜Ž Flow์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค ๐Ÿ™ [Kotlin] ์ฝ”ํ‹€๋ฆฐ Coroutine์— ๋Œ€ํ•˜์—ฌ (3) - Coroutine Flow(ํ”Œ๋กœ์šฐ) ์•ˆ๋…•ํ•˜์„ธ์š”๐Ÿ‘‹ ์˜ค๋Š˜์€ ์ฝ”๋ฃจํ‹ด ๊ด€๋ จ ๋งˆ์ง€๋ง‰ ํฌ์ŠคํŒ…์œผ๋กœ ์ฝ”๋ฃจํ‹ด Flow์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 1. Coroutine Flow๋ž€? Flow๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์„ ๋‚ด๋ณด๋‚ด๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋˜๋Š” ์˜ˆ์™ธ๋กœ ์™„๋ฃŒ๋˜ devyo-111commit.tistory.com ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ด์ „ Clean Architecture์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์„ ํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ ์˜ˆ์ œ๋ฅผ Flow๋กœ ์ด์ „ํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜ˆ์ œ์˜ ์ „์ฒด ์ฝ”๋“œ ๋ฐ ์„ค๋ช…์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ..

Android/Kotlin 2023.03.22

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ ListAdapter์™€ DiffUtil , AsyncListDiffer๋ฅผ ํ™œ์šฉํ•œ RecyclerViewAdapter ๊ตฌํ˜„ํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ RecyclerView๋ฅผ ์ข€ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ListAdapter, DiffUtil , AsyncListDiffer์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € RecyclerView์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์€ ์•„๋ž˜์—์„œ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ™ [Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ RecyclerView(๋ฆฌ์‹ธ์ดํด๋Ÿฌ ๋ทฐ)์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ• ์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ RecyclerView์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. RecyclerView(๋ฆฌ์‹ธ์ดํด๋Ÿฌ ๋ทฐ)๋ž€? RecyclerView๋Š” ListView์ฒ˜๋Ÿผ ์ œํ•œ๋œ ํ™”๋ฉด(Window)์— ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์…‹์„ ๋ณด์—ฌ์ค„ ๋•Œ ์‚ฌ์šฉํ•ฉ devyo-111commit.tistory.com DiffUtil์ด๋ž€? RecyclerView๋ฅผ ์‚ฌ์šฉํ• ๋•Œ Recycl..

Android/Kotlin 2023.02.03

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Hilt๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ์ฃผ์ž…๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ์•ˆ๋“œ๋กœ์ด๋“œ Hilt์˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Hilt๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)์ด๋ž€? ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ž€ class์™€class ๊ฐ„ ์˜์กด์„ฑ์— ๋Œ€ํ•œ ์ฃผ์ž…์„ ์™ธ๋ถ€์—์„œ ํ•จ์œผ๋กœ์จ class ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”์–ด ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ์˜๋ฏธ ํ•ฉ๋‹ˆ๋‹ค. /** ์˜์กด์„ฑ์ด ์ฃผ์ž…๋˜์ง€ ์•Š์€ ์ฝ”๋“œ **/ class Foo(){ val noDI = NoDepedency() fun somethingTodo() { noDI.foo() } } class NoDependency(){ fun foo() } ์˜์กด์„ฑ์ด ์ฃผ์ž…๋˜์ง€ ์•Š์€ ์ฝ”๋“œ๋Š” ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด NoDepedency๋ผ๋Š” class๋ฅผ Foo์—์„œ ..

Android/Kotlin 2023.01.14

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ ItemTouchHelper์— ๋Œ€ํ•ด์„œ (Drag and Drop ๊ณผ Swipe ๊ตฌํ˜„ํ•˜๊ธฐ)

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ItemTouchHelper๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ItemTouchHelper๋ž€? ItemTouchHelper๋Š” RecyclerView์— ์‚ญ์ œ๋ฅผ ์œ„ํ•œ Swipte ๋ฐ Drag and Drop์„ ์ง€์›ํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ItemTouchHelper๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” RecyclerView ๋ฐ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜๋Š” ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” Callback ํด๋ž˜์Šค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Ž ์ด๋ฒˆ ์—์ œ์—์„œ๋Š” ItemTouchHelper์™€ RecyclerView๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. RecyclerView์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ˆ ํ•จ๊ป˜ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. [Kotlin][A..

Android/Kotlin 2023.01.02

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ RxBinding์— ๋Œ€ํ•ด์„œ(RxBinding์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•)

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ์ œ๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉฐ ์‚ฌ์šฉํ–ˆ๋˜ RxBinding์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € RxBinding์ด๋ž€? RxBinding์€ RxJava์™€ RxAndroid๋ฅผ ์ด์šฉํ•ด ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ์œ„์ ฏ์ด๋‚˜ View์— Rx๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋ก  TextWatcher์˜ ๊ธฐ๋Šฅ์ด๋‚˜ Button Click ์ด๋ฒคํŠธ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Rxbinding์„ ํ†ตํ•ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” Operator๋“ค๋กœ๋Š” throttleFirst() , debounce()๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ํ•จ์ˆ˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์šฐ์„  ์„ค๋ช… ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. throttleFirst() ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ์ผ์–ด๋‚˜๋Š” ์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ๋“ค์€ ๊ฐ€์žฅ ๋จผ์ € ํ˜ธ์ถœ๋œ ์ด๋ฒคํŠธ๋งŒ ๋ฐฉ์ถœํ•˜๊ณ  ๊ทธ ์ดํ›„์— ๋“ค์–ด์˜จ ์ด๋ฒคํŠธ๋Š” ๋ฌด์‹œํ•˜๋Š” Operator์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ..

Android/Kotlin 2022.12.21

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Room์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹ ์˜ค๋Š˜์€ ์•ˆ๋“œ๋กœ์ด๋“œ Room์˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Room์ด๋ž€? ์Šค๋งˆํŠธํฐ ๋‚ด์žฅ DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ORM(Object Relational Mapping)๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Room์€ DB ๋ฐ์ดํ„ฐ๋ฅผ Java ๋˜๋Š” ์ฝ”ํ‹€๋ฆฐ ๊ฐ์ฒด๋กœ ๋งคํ•‘ํ•ด์ฃผ๋ฉฐ, SQLite๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ DB๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์˜ ํŽธ์˜์„ฑ์„ ๋†’์—ฌ์ฃผ์–ด ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค. Room์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ room์˜ ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ Database , DAO , Entity๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Room์˜ ๊ตฌ์กฐ์ด๋ฉฐ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Entity(์—”ํ‹ฐํ‹ฐ) DB ๋‚ด์˜ Table๋กœ class์˜ ๋ณ€์ˆ˜๋“ค์ด ์นผ๋Ÿผ(column)์ด ๋˜์–ด Table์ด ์ƒ์„ฑ..

Android/Kotlin 2022.12.16