๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
-
[Android] RecyclerView ViewHolder ํจํด, DiffUtil ํด๋์คAndroid 2022. 3. 22. 02:52
RecyclerView ์์ ์๋๋ก์ด๋ ๊ฐ๋ฐํ๋ฉด์ ๋ฆฌ์คํธ ํํ๋ก ๋ฐ์ดํฐ๋ค์ ํํํด์ฃผ๋ ๋ฐ ์ฌ์ฉํ๋ ํด๋์ค๋ ListView ์์ต๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ๋ทฐ๋ฅผ ๊ณ์ ์์ฑํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์์ด ๋ฐ์ํ๊ฒ ๋๊ณ getView ๋ฉ์๋์์ ๋ฌด๋ถ๋ณํ findViewById๋ฅผ ์ฌ์ฉํ์๊ธฐ์ ๋นํจ์จ์ ์ด์์ต๋๋ค. ์ด๋ฅผ ๊ฐ์ ํ ์์ ฏ์ด RecyclerView๋ก ํ๋ฉด์ด ๋ณด์ฌ์ง๋ ๋ทฐ๊น์ง๋ง ์์ฑํ ํ ์คํฌ๋กค ์์ ๊ฐ๋ ค์ง๊ฒ ๋๋ ๋ทฐ๋ค์ ์ฌ์ฌ์ฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ, findViewById์ ๊ฐ ๋น์ผ ๋น์ฉ์ ๋ฐฉ์งํ๊ณ ์ ViewHolder ํจํด์ ๊ฐ์ ํ ์ํจ ListView๋ผ๊ณ ํ ์ ์์ต๋๋ค. ViewHolder ํจํด์ด๋? ViewHolder ํจํด์ ์ดํดํ๊ธฐ ์ํด์๋ ViewHolder ํจํด์ด ์ ํ์ํ์ง๋ถํฐ ์ด..
-
[Android] ViewBinding์ด๋?Android 2022. 3. 20. 03:18
View Binding? Activity, Fragment์ UI๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ XML ํ์ผ์ ์ธํ๋ ์ด์ ํ ๊ฐ View๋ค์ findViewById๋ฅผ ํตํด ์ฐธ์กฐ๋ฅผ ํด์ผํฉ๋๋ค. ๊ฐ๋จํ UI์ผ ๊ฒฝ์ฐ์๋ ํฌ๊ฒ ์๊ด์์ง๋ง, ๋ณต์กํ UI์ผ์๋ก ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋๋ฅผ ์์ฐํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๊ฒ View์ ์ํธ์์ฉํ๊ธฐ ์ํด์ ๋์จ ๊ฒ์ด DataBinding๊ณผ ViewBinding์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ViewBinding์ ๋ํด์๋ง ๋จผ์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค. View Binding ์ค์ View Binding์ ๋ชจ๋๋ณ๋ก ์ค์ ํ๊ธฐ์ build.gradle(Module) ์ ์๋์ ๊ฐ์ด ์ค์ ํด์ผ ํฉ๋๋ค. android { ... viewBinding { enabled = true } } ๋ชจ๋์์ ์ค์ ๋..
-
[Android] Storage Access Framework(SAF) ์ด๋?Android 2022. 3. 13. 17:54
Storage Access Framework(SAF) Android 4.4(API 19)์ดํ๋ถํฐ ๋ฌธ์, ์ด๋ฏธ์ง(์ฌ์ง) ๋ฐ ๊ฐ์ข ๋ค๋ฅธ ํ์ผ์ ํ์ํ๊ณ ์ฌ๋ ์์ ์ ๊ฐํธํ๊ฒ ํด์ฃผ๋ Strorage Access Framework(SAF)๊ฐ ๋์ ์ด ๋์์ต๋๋ค. Selector๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ํ์ผ์ ํ์ํ๊ณ ์ต๊ทผ ๊ธฐ๋ก์ ์ก์ธ์คํ ์ ์์ต๋๋ค. SAF ๊ตฌ์ฑ ์์ Document Provider ๋ฌธ์๋ฅผ ์ ๊ณตํ๋ ์ฃผ์ฒด๋ก DocumentProvider ํด๋์ค๋ฅผ ์์๋ฐ๊ณ ์์ผ๋ฉฐ, Android์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋ ๋ค์ด๋ก๋, ์ด๋ฏธ์ง, ๋์์๊ณผ ๊ฐ์ ์ฑ๋ค์ด DocumentProvider ํด๋์ค๋ฅผ ์์๋ฐ์ ๋ฌธ์๋ฅผ ์ ๊ณตํด์ค๋๋ค. Client App Document Provider์์ ์ ๊ณต๋ ๋ฌธ์, ํ์ผ๋ค์ ์ฌ์ฉ..
-
[Android] findViewById ์๋ฆฌAndroid 2022. 3. 13. 14:45
findViewById ๋? ์๋๋ก์ด๋ ๊ฐ๋ฐ์์ findViewById ๋ฉ์๋๋ ๋ ์ด์์์ ์๋ ๋ทฐ๋ฅผ ๋ฆฌ์์ค id๋ฅผ ํตํด์ ์ํ๋ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฉ์๋์ ๋๋ค. ๊ทธ ์ ์ setContentView์ ๊ฐ์ ๋ฉ์๋๋ก xml์ ์๋ ๋ฆฌ์์ค๋ค์ ์ง์ ํ ์์ฑ์ ๋ง๊ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํด์ผ ํฉ๋๋ค. findViewById๋ก ๋ทฐ ๊ฐ์ฒด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์ค๊ฒ ๋๋ฉด ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋๋ค์ ๋ง์ด ์์ฑํ๊ฒ ๋๊ณ , ์ฑ๋ฅ์์ ์ด์ ๋ก๋ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋์ฒดํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ด ๋ํ๋๊ณ ์์ต๋๋ค. ๋์ฒด ๋ฐฉ๋ฒ๋ง ์ตํ๋ ์ข์ง๋ง findViewById๊ฐ ์ด๋ ํ ์ด์ ๋ก ์ธํด ์ฑ๋ฅ์ด ์ ์ข์์ง ๊ณต๋ถํ๋ ๊ฒ๋ ์ ์ตํ๊ธฐ์ ๊ธ์ ์์ฑํ์์ต๋๋ค. Activitiy์์ findViewById๋ฅผ ํธ์ถํ๋ฉด ๋ด๋ถ์ ์ผ๋ก Window ํด..
-
[Android] Native Application(C/C++), NDK build ๋ฐ CMake ๊ตฌ์ฑAndroid 2022. 2. 14. 23:01
Native Application Android NDK๋ C ๋๋ C++๋ฅผ Android ์ฑ์ ์ฝ์ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ ์งํฉ์ ๋๋ค. ์๋์ ๊ฐ์ ์ด์ ๋ก Android ํ๋ก์ ํธ์ C ๋ฐ C++ ์ฝ๋ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ต๋๋ค. ํ๋ซํผ ๊ฐ ์ฑ ํธํ์ฑ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฌ์ฉ, ์ฌ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(.so) ์ ๊ณต ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ ์ฑ ์ฑ๋ฅ ํฅ์ Android Studio์์๋ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปดํ์ผ ๋๊ตฌ๋ก ํฌ๋ก์ค ํ๋ซํผ ํ๋ก์ ํธ์ ์ ํฉํ CMake์ CMake๋ณด๋ค ๋น ๋ฅด์ง๋ง Android๋ง ์ง์ํ๋ ndk-build๋ฅผ ์ง์ํฉ๋๋ค. ํ๋์ ํ๋ก์ ํธ์ CMake์ ndk-build๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ ๊ฒ์ ํ์ฌ ์ง์๋์ง ์๋๋ค๊ณ ํฉ๋๋ค. ์ ๋ ndk-build๋ก ๊ตฌ์ฑํ๋ ๊ฒ๊ณผ C..
-
[Android] ContentProvider ๊ตฌํ ๋ฐ ์ฌ์ฉ๋ฒAndroid 2022. 2. 5. 21:40
ContentProvider๋? ContentProvider๋ Activity, BroadcastReceiver, Service์ ๋์ผํ๊ฒ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ 4๋ ์์ ์ค ํ๋๋ก ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ํ์ํ ๋ ์ฌ์ฉํ๊ฒ ๋๋ ์ปดํฌ๋ํธ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ ์ฑ์ ํ๋์ ํ๋ก์ธ์ค๋ก ์คํ๋๋ฉฐ ์์ ์ ํ๋ก์ธ์ค์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ์์ ๋ง ์ ๊ทผ๊ฐ๋ฅํ๋๋ก ๋์ด ์์ต๋๋ค. ํ์ง๋ง, ์ฌ์ง์ฒฉ์ ์๋ ์ฌ์ง๋ค์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ฐ๋ฝ์ฒ์ ์๋ ์ฐ๋ฝ์ฒ ์ ๋ณด๋ค์ ๊ฐ์ ธ์์ผํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ContentProvider๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๊ฒ ๋ง๋ค ์ ์๋ ํต๋ก ์ญํ ์ ์ ๊ณตํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฑ์ ๋ณด์์ ์ํด์ ์๊ฒจ๋ ContentProvider ์ปดํฌ๋ํธ๋ ์๋๋ก์ด๋ ๊ตฌ..
-
[Android] Room ์ดํด ๋ฐ ํ์ฉAndroid 2022. 1. 1. 02:32
Room์ด๋? SNS๋ฅผ ์ฌ์ฉํ๋ ์ค์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๋์ด์ก์ ๋ ์๋ก์ด ์ฌ์ง๋ค์ด ๋ก๋ฉ ์ค์ด๊ณ ์ด์ ์ ๋ดค๋ ์ฌ์ง๋ค์ ๊ณ์ ๋ณด์ด๋ ๊ฒ์ ๊ฒฝํํด ๋ณธ์ ์ด ๋ค๋ค ์์ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ๋ฐ์ดํฐ ์บ์ฑ์ด๋ผ๊ณ ํ๋ฉฐ, ๋คํธ์ํฌ ์ก์ธ์ค ํ ์ ์์ ๊ฒฝ์ฐ์๋ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ์๋ค์ด ์ฑ์ ์ฌ์ฉํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. Android์์๋ SQLite ๋ผ๋ ๊ฐ๋ฒผ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋์ด ์์ต๋๋ค. ํ์ง๋ง ์๋์ ๊ฐ์ ์ด์ ๋ก ์ธํด SQLite ๋ณด๋ค Jetpack ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋ Room์ ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์์ต๋๋ค. SQL ์ฟผ๋ฆฌ์ ๋ํด์ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ์ด ๋์๋์ง ์ปดํ์ผ ํ์์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์๋ชป๋ ์ฟผ๋ฆฌ ์ฌ์ฉ์ผ๋ก ์ํฅ์ ๋ฐ๋ ๋ฐ์ดํฐ๊ฐ ์๊ธด๋ค๋ฉด, ์ค๋ฅ๋ฅผ ์ง์ ..
-
[Android] SQLite, SQLiteOpenHelper, Local DB ์ดํดAndroid 2021. 11. 30. 09:46
SQLite๋? Android ๊ฐ๋ฐ์ ํ๋ฉด์ ์ฑ์ ์ฌ์ฉํ๊ณ ์ข ๋ฃํ๋๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ์ ์ฅ๋์ด์ผํ ํ์์ฑ์ด ์์ต๋๋ค. ๊ฐ๋จํ๊ฒ ์ ์ฅํ๋ ๊ฒ์ด๋ผ๋ฉด SharedPreference๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง, key์ value์ ๊ฐ์ผ๋ก๋ง ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ ํ๋ค๊ณ , ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๊ณ ์๋๋ก์ด๋์์๋ ๊ฐ๋ฒผ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ SQLite๊ฐ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋์ด ์์ต๋๋ค. SQLite์ ์ฃผ์ ํน์ง์ ๋ฐ์ดํฐ ์กฐํ๊ฐ ๋น ๋ฅด๊ณ , ํ์ค SQL ์ ์ง์ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ์ ๊ธฐ๋ฅ์ธ C(Create), R(Read), U(Update), D(Delete)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. SQLite๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ Todo List๋ฅผ ์์ฑํ๋ ์ดํ..