๊นจ์•Œ ๊ฐœ๋… ๐Ÿ“‘/Android 82

[Android] Room - UPDATE ์—ฐ์Šต

#1 ์ด์ „ ๊ธ€ [Android] Room - ๊ธฐ์ดˆ, INSERT์™€ DELETE ์—ฐ์Šต#1 Room ์†Œ๊ฐœ Room์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ ์ €์žฅ | Android Developers Room ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ developer.android.com SQLite๋Š” ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๋ฅผ ์œ„ํ•œ kenel.tistory.com์ด์ „ ๊ฒŒ์‹œ๊ธ€์˜ ์™„์„ฑ๋œ ์•ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ๋ฏธ๊ตฌํ˜„ํ•œ RecyclerView๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , Entity์— UPDATE๋ฌธ๊นŒ์ง€ ์ ์šฉ์‹œ์ผœ๋ณธ๋‹ค. #2 ๊ฐœ์š” [Android] RecyclerView - ๊ธฐ์ดˆ#1 ListView vs RecyclerViewํ™”๋ฉด์— ์š”์†Œ(Item)์„ 100๊ฐœ ํ‘œํ˜„ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ListView๋‚˜ GridView ๋“ฑ์˜ ์ „ํ†ต์ ์ธ Cont..

[Android] Room - Entity, DAO, Database

#1 ์ด์ „ ๊ธ€ [Android] Room - ๊ธฐ์ดˆ, INSERT์™€ DELETE ์—ฐ์Šต#1 Room ์†Œ๊ฐœ Room์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ ์ €์žฅ | Android Developers Room ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ developer.android.com SQLite๋Š” ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๋ฅผ ์œ„ํ•œ kenel.tistory.com๋ณธ ๊ฒŒ์‹œ๊ธ€์€ Room์˜ ๊ธฐ๋ณธ์„ ๋‹ด์€ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ด์ „ ๊ฒŒ์‹œ๊ธ€์—์„œ ์ด์–ด์ง„๋‹ค. ์—ฌ๊ธฐ์„œ Room์˜ 3๊ฐ€์ง€ ํ•ต์‹ฌ ํด๋ž˜์Šค์ธ Entity ํด๋ž˜์Šค, DAO ํด๋ž˜์Šค, Database ํด๋ž˜์Šค์˜ ๊ตฌํ˜„์„ ๋‹ค๋ฃฌ๋‹ค. ์ด์ „ ๊ฒŒ์‹œ๊ธ€์—์„œ ๋ชจ๋“ˆ ์ˆ˜์ค€ build.gradle.kts์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ๋ณธ ๊ฒŒ์‹œ๊ธ€์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. #2 Entity, DA..

์ฐธ[Android] Room - ๊ธฐ์ดˆ, INSERT์™€ DELETE ์—ฐ์Šต

#1 Room ์†Œ๊ฐœ Room์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ ์ €์žฅ  |  Android DevelopersRoom ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐdeveloper.android.comSQLite๋Š” ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๋ฅผ ์œ„ํ•œ SQL Database ์—”์ง„์ด๋‹ค. SQLite๋Š” ์ˆ˜ ๋งŽ์€ Android ๊ธฐ๊ธฐ์— ํƒ‘์žฌ๋˜์–ด์žˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด SQLite๋ฅผ ์ž˜ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, SQLite๋ฅผ ์ƒ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š๋‹ค. ๋ฐ˜๋ณต๋˜๋Š” Database Query๋ฌธ ๋“ฑ๊ณผ ๊ฐ™์€ ๋งŽ์€ ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ์–ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์—, Database ์ž‘์—…์— ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ์ด์ƒ์ ์ธ ๊ทธ๋ฆผ์ด ์•„๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ๊ตฌ๊ธ€์˜ Room Database..

[Kotlin] Coroutines - LiveData Builder

๋ณธ ๊ฒŒ์‹œ๊ธ€์˜ Coroutine ๊ฐœ๋…์€ Android ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. #1 Coroutine์ด ์“ฐ์ธ LiveData ์˜ˆ์ œ - ์ „ํ†ต์ ์ธ ๋ฐฉ๋ฒ•#1์€ LiveData ๊ฐ’ ํ• ๋‹น์— Coroutines๊ฐ€ ์“ฐ์ธ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋‹ค. #1-1 build.gradle.kts (Module)plugins {    ...}android {    ...}dependencies {    ...    //  Coroutines    val coroutinesVersion = "1.7.3"    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")    implementation("org.jetbrains.kotlin..

[Kotlin] Coroutines - LifecycleScope

๋ณธ ๊ฒŒ์‹œ๊ธ€์˜ Coroutine ๊ฐœ๋…์€ Android ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. #1 ์ด์ „ ๊ฒŒ์‹œ๊ธ€ [Kotlin] Coroutines - ViewModelScope๋ณธ ๊ฒŒ์‹œ๊ธ€์˜ Coroutine ๊ฐœ๋…์€ Android ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. #1 ViewModel ์† ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์˜ Coroutinesimport androidx.lifecycle.ViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dkenel.tistory.com์ด์ „ ๊ฒŒ์‹œ๊ธ€์—์„œ ViewModel์˜ ์ˆ˜๋ช…์ฃผ๊ธฐ๋ฅผ ์ฐธ์กฐํ•ด, ViewModel์ด ์†Œ๋ฉธ๋  ๋•Œ ์•Œ์•„์„œ ์ข…๋ฃŒ๋˜๋Š” CoroutineScope์— ๋Œ€ํ•ด ๋‹ค๋ค˜๋‹ค. ์ด๋ฒˆ์—” ๊ทธ ์ฐธ์กฐ์˜ ๋Œ€์ƒ..

[Android] RecyclerView - Adapter์— ์ธ์ž(Argument) ์ „๋‹ฌ

#1 ์ด์ „ ๊ธ€ [Android] RecyclerView - ๊ธฐ์ดˆ#1 ListView vs RecyclerView ํ™”๋ฉด์— ์š”์†Œ(Item)์„ 100๊ฐœ ํ‘œํ˜„ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ListView๋‚˜ GridView ๋“ฑ์˜ ์ „ํ†ต์ ์ธ Container Widget๋“ค์€ ์ด 100๊ฐœ์˜ ์•„์ดํ…œ์„ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜จ(load)๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์„ ์Šคํฌ๋กคํ•˜๋ฉด ๋ฏธ๋ฆฌ Load๋˜kenel.tistory.com์ด์ „ ๊ธ€์˜ ์™„์„ฑ๋œ ์•ฑ์ด, Adapter๊ฐ€ ์ธ์ž(Argument)๋ฅผ ์ „๋‹ฌ๋ฐ›๋„๋ก ์ˆ˜์ •ํ•ด๋ณธ๋‹ค. ์ถ”๊ฐ€๋กœ, ViewHolder์— ํด๋ฆญ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์˜ˆ์‹œ์™€ ๊ทธ ํด๋ฆญ ๋ฆฌ์Šค๋„ˆ ๋˜ํ•œ ์ธ์ž(Argument)๋กœ ์ „๋‹ฌํ•˜๋Š” ์ฝ”๋“œ๋„ ์‚ดํŽด๋ณธ๋‹ค. #2 Adapter๊ฐ€ ์ธ์ž๋ฅผ ์ „๋‹ฌ๋ฐ›๊ฒŒ ๋งŒ๋“ค๊ธฐ#2-1 Menu.kt ๋งŒ๋“ค๊ธฐ// package com.example.argu..

[Android] RecyclerView - ๊ธฐ์ดˆ

#1 ListView vs RecyclerViewํ™”๋ฉด์— ์š”์†Œ(Item)์„ 100๊ฐœ ํ‘œํ˜„ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ListView๋‚˜ GridView ๋“ฑ์˜ ์ „ํ†ต์ ์ธ Container Widget๋“ค์€ ์ด 100๊ฐœ์˜ ์•„์ดํ…œ์„ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜จ(load)๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์„ ์Šคํฌ๋กคํ•˜๋ฉด ๋ฏธ๋ฆฌ Load๋˜์–ด์žˆ๋Š” ์•„์ดํ…œ๋“ค์ด ๋ณด์ด๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ด ๋‚ฎ๋‹ค. ๋ฐ˜๋ฉด, RecyclerView๋Š” ์•„์ดํ…œ๋“ค์„ ๋ฏธ๋ฆฌ Loadํ•ด๋‘์ง€ ์•Š๋Š”๋‹ค. ์•„์ดํ…œ์ด ํ™”๋ฉด์ด ๋ณด์ด๊ธฐ ์ง์ „์—, ์ด์ „ ์•„์ดํ…œ์˜ ๊ป๋ฐ๊ธฐ๋ฅผ ์žฌํ™œ์šฉ(Recycle)ํ•ด์„œ ๊ทธ๋•Œ ๊ทธ๋•Œ Loadํ•œ๋‹ค. #2 Adapter RecyclerView.Adapter  |  Android Developersandroidx.appsearch.builtintypes.propertiesdeveloper.android..

[Android] Navigation - ์• ๋‹ˆ๋ฉ”์ด์…˜

#1 ํ”„๋ž˜๊ทธ๋จผํŠธ ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•  ์ƒ˜ํ”Œ ์•ฑ [Android] Navigation - ๊ธฐ์ดˆ#1 ์ด์ „ ๊ธ€ [Android] Navigation - ํ™˜๊ฒฝ ์„ค์ • #1 Navigation#1-1 ์•กํ‹ฐ๋น„ํ‹ฐ ๋ฐ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ตฌ์„ฑ์˜ ํŠธ๋ Œ๋“œ์š”์ฆ˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์˜ ํŠธ๋ Œ๋“œ๋Š” ํ•˜๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๋‹ค. ์ด๋Š” ๊ตฌ๊ธ€์˜ ๊ถŒ์žฅ์‚ฌํ•ญkenel.tistory.com์œ„ ๊ฒŒ์‹œ๊ธ€์˜ ์™„์„ฑ๋œ ์•ฑ์„ ์ˆ˜์ •ํ•ด ํ”„๋ž˜๊ทธ๋จผํŠธ ์ „ํ™˜ ์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•ด๋ณธ๋‹ค. #2 ํ”„๋ž˜๊ทธ๋จผํŠธ ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜#2-1 Action์˜ ์†์„ฑNavigation graph๋ฅผ Design ๋ชจ๋“œ๋กœ ์—ฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Action์„ ํด๋ฆญํ•˜๋ฉด Animation์ด๋ผ๋Š” ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์ด ๋ณด์ธ๋‹ค. ์ฆ‰, ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ Action์ด ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์–˜๊ธฐ๋‹ค. ์ด 4๊ฐœ์˜ ..

[Android] Navigation - ๊ธฐ์ดˆ

#1 ์ด์ „ ๊ธ€ [Android] Navigation - ํ™˜๊ฒฝ ์„ค์ •#1 Navigation#1-1 ์•กํ‹ฐ๋น„ํ‹ฐ ๋ฐ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ตฌ์„ฑ์˜ ํŠธ๋ Œ๋“œ์š”์ฆ˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์˜ ํŠธ๋ Œ๋“œ๋Š” ํ•˜๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๋‹ค. ์ด๋Š” ๊ตฌ๊ธ€์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ด ํŠธ๋ Œ๋“œ์—์„œ ๋‹จ์ผ ์•กํ‹ฐkenel.tistory.com์œ„ ๊ฒŒ์‹œ๊ธ€์—์„œ ์ด์–ด์ง„๋‹ค. ๋ณธ ๊ฒŒ์‹œ๊ธ€์—์„  Navigation์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒ˜ํ”Œ ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณธ๋‹ค. #2 Navigation ์‚ฌ์šฉํ•˜๊ธฐ - Destination ํ”„๋ž˜๊ทธ๋จผํŠธ#2-1 Navigation graph์— Destination ํ”„๋ž˜๊ทธ๋จผํŠธ ๋“ฑ๋กํ•˜๊ธฐ์šฐ๋ฆฌ๊ฐ€ activity_main.xml์„ ๋‹ค๋ฃฐ ๋•Œ Code ๋ชจ๋“œ, Split ๋ชจ๋“œ, Design ๋ชจ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ํŽธ์ง‘ํ•˜๊ณค ํ–ˆ๋‹ค. nav_graph.xml๋„ ๊ทธ๋ ‡๋‹ค. na..

[Android] Navigation - ํ™˜๊ฒฝ ์„ค์ •

#1 Navigation#1-1 ์•กํ‹ฐ๋น„ํ‹ฐ ๋ฐ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ตฌ์„ฑ์˜ ํŠธ๋ Œ๋“œ์š”์ฆ˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์˜ ํŠธ๋ Œ๋“œ๋Š” ํ•˜๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๋‹ค. ์ด๋Š” ๊ตฌ๊ธ€์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ด ํŠธ๋ Œ๋“œ์—์„œ ๋‹จ์ผ ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์ผ์ข…์˜ '๋นˆ ๊ทธ๋ฆ‡'์œผ๋กœ์„œ๋งŒ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค. ์œ ์˜๋ฏธํ•œ ํ™”๋ฉด ์ปจํ…์ธ ๋Š” ์ „๋ถ€ ํ”„๋ž˜๊ทธ๋จผํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. #1-2 Navigation architecture component library ํƒ์ƒ‰  |  Android ๊ฐœ๋ฐœ์ž  |  Android DevelopersAndroid Jetpack์˜ ํƒ์ƒ‰ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์—์„œ ํƒ์ƒ‰ ๊ตฌํ˜„developer.android.com๊ทธ๋Ÿฌ๋‚˜, ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„์˜ ์ „ํ™˜(Navigation)๊ณผ ํ๋ฆ„์„ ์ผ์ผ์ด ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊ณจ์น˜์•„ํ”ˆ ์ผ์ด๋‹ค. ์ด ๋•Œ, ์•ˆ๋“œ๋กœ์ด๋“œ Je..