๐ฑ Today I Learned (์ง์ค์๊ฐ : 7์๊ฐ 0๋ถ)
- (09:50 ~ 11:10 / 1์๊ฐ 20๋ถ) ๋ฐ์ผ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ ํ์ด ๋ฐ ํ ์คํฌ๋ผ
- (11:10 ~ 11:30 / 20๋ถ) ํํฐ๋ ๊ณผ์ ์๋ด
- (11:30 ~ 13:00 / 1์๊ฐ 30๋ถ) ์คํ ๋ค๋๋ฐ 4์ฃผ์ฐจ ๊ณผ์ ๊ตฌํ
- (14:10 ~ 15:10) ๊ฐ์ธ์ ์ธ ๊ณต๋ถ : ํฌ์, ๋ง์ผํ
- (16:00 ~ 18:50 / 2์๊ฐ 50๋ถ) ์คํ ๋ค๋๋ฐ 4์ฃผ์ฐจ ๊ณผ์ ๊ตฌํ 1์ฐจ ์๋ฃ
- (19:20 ~ 19:40 / 20๋ถ) ๊ณผ์ ๊นํ๋ธ ์ ๋ก๋ ๋ฐ README.md ์์
- (19:40 ~ 20:40 / 1์๊ฐ) ํ์ ์ฝ๋ ๋ถ์
*** ์ ์ฌ 13:00 ~ 14:00 / ์ ๋ 18:00 ~ 19:00 ์ ์ธ
โ
๐ ์ด๋ฒ ์ฃผ ๋ชฉํ
[V] ์๋ จ ๊ฐ์ ๋ค ๋ฃ๊ธฐ[ ] ์คํ ๋ค๋ 2์ฃผ์ฐจ ์ฌํ ๊ตฌํ : ์๋ จ ๊ฐ์ ์ฒดํ(fragment, fragment ๊ฐ์ ๋ฐ์ดํฐ์ ๋ฌ) ํฌ๊ธฐ[V] ์คํ ๋ค๋๋ฐ ๋ฐ๋ฆฐ ๊ฐ์ ๋ฃ๊ธฐ[V] ์ ๋ฌธ ๊ฐ์ธ ๊ณผ์ ํด์ค ํ์ต[V] ๋ฒ ์ด์ง๋ฐ ๊ฐ์ 4์ฃผ์ฐจ๊น์ง[V] ์คํ ๋ค๋ 4์ฃผ์ฐจ ๊ณผ์ ๊ตฌํ- [ ] ์๋ จ ๊ฐ์ธ ๊ณผ์ ํ์ ๊ตฌํ : ์๋ จ ๊ฐ์ ์ฒดํ(notification, dialog, recyclerview, fragment ์ข ํฉ)
- [ ] ์ ์ฐฝ๊ฒฝ ๋ด์ฉ ์ ๋ฆฌ
- [ ] ๋ฐ๋ฆฌ์ ์์ฌ ์๋๋ก์ด๋ ์์ ์ง๋ ๋ถ๋ถ๊น์ง ๋ค ํ๊ธฐ
- [ ] ์๊ณ ๋ฆฌ์ฆ ์ง์ค ์ฝ๋์นดํ
- [ ] ๋งํฌ ์๊ฐ
- [ ] (์ฌํ) KIA ๊ฐ๋ ํ๊ธฐ
- [ ] (์ฌํ) Android Developer ์ฝ๊ธฐ
- [ ] (์ฌํ) ๊ฐ์ธํ๋ก์ ํธ UI ๊ตฌํ
- [ ] (์ฌํ) ์ ๋ฒ ํ๋ก์ ํธ ์ฝ๋ ๋ฏ์ด๋ณด๊ธฐ
โ
1. ์๊ณ ๋ฆฌ์ฆ ํ์ด (์ผ์ด์ฌ)
[Kotlin] ์ผ์ด์ฌ (ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ)
๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/131705 ์ ๊ทผ ์ฃผ์ด์ง number ๋ฐฐ์ด์ ์์ ์ค ํฉ์ณค์ ๋ 0์ด ๋๋ ์ธ ์์ ๊ฐ์๋ฅผ ๋ฆฌํดํ๋ ๋ฌธ์ ๋ค. ๋ฐ๋ณต๋ฌธ์ ์ฌ๋ฌ ๊ฐ ์จ์ ์์ ์๋ฅผ ๋ํ๋ ๋ฐฐ์ด์ ๋ฃ
limheejin.tistory.com
- ์ฒ์์ ์ค๋ณต๋ ์์๋ก ๊ตฌ์ฑ๋ ์งํฉ์ ๋ง๋ค ์ ์๋ ์ค ์๊ณ ์ฝ์ง์ ์ข ํ๋ค.
- ๋ฌธ์ ๋ฅผ ํ๊ณ ๋ ์ฌ์ ํ ํด๊ฒฐ๋์ง ์๋ ๊ถ๊ธ์ฆ๋ค์ด ์์๋ค.
(1) ๋ง์ฝ ์ค๋ณต๋ ์์๋ก ์์ ๋ง๋ค ์ ์์ ๋ ์ด๋ป๊ฒ ๊ตฌํํ๋๊ฐ?
(2) ์ผ๋ฐ์ ์ผ๋ก ์๋ ค์ง ํด๋ฆฐ์ฝ๋๋ฅผ ์ํ depth๋ ์ต๋ 2์ด๋ค. ์ด ๋ฌธ์ ์์๋ depth๋ฅผ ์ด๋ป๊ฒ ์ค์ฌ์ผ ํ ๊น? - (1)๋ฒ์ ๊ฒฝ์ฐ HashSet์ด๋ HashMap์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํ์ง๋ง, (2)๋ฒ์ ๊ฒฝ์ฐ depth๋ฅผ ์ค์ผ ์ ์๋ ๊ฒ ๊ฐ์๋ค.
2. ์คํ ๋ค๋๋ฐ 4์ฃผ์ฐจ ๊ณผ์ ๊ตฌํ
- ์บ ํ๊ฐ ์์๋ ์ด๋๋ก ์ ์ผ ์ฝ์ง๊ณผ ์ฝ์ง์ ๋ฐ๋ณตํ๋ ์ค
- ๋ทฐํ๋๋ฅผ ์ํ ์ด๋ํฐ๋ฅผ ๋ง๋ค๊ณ ์ด ์ด๋ํฐ๋ฅผ ์กํฐ๋นํฐ์ ์ฐ๊ฒฐํด์ ๊ฐ์ ๋ฟ๋ ค์ฃผ๋ ๊ฒ ๋๋ฌด์ง... ์ดํด๊ฐ ์ ๊ฐ๋ค.
๊ทธ๋์ ์ธํฐ๋ท ์ํ๊ณผ ์ ํ๋ธ๋ฅผ ์์ฒญ๋๊ฒ ์ฐพ์๋ณด์๋ค. ๊ทธ ์ค์์ ์ดํด๊ฐ ์ ๋์๋ ์์์ด๋ค.
๊ฐ์ํ์๋ ๋ถ๋ ์ฒ์ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๋ฅผ ๋ฐฐ์ธ ๋๊ฐ ์ฒซ ๋๊ด์ด์๋ค๊ณ ํ์ ์ ๊ทธ๋๋ง ์๋ก๊ฐ ๋๋ค. - ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๋ฅผ ๋ง๋ค ๋์ ์ปจ๋ฒค์
- ๋ณดํต ์์ดํ ์ ๋ด๋ xml ํ์ผ์ ์ด๋ฆ์ 'item_card' ํ์์ผ๋ก ์์ item์ ๋ถ์ฌ์ค๋ค.
(1) ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๊ฐ ์ถ๋ ฅ๋์ง ์์๋ ๋ฌธ์
- ์ด์ฐ์ ์ฐ ์ธํฐ๋ท์ํ๊ณผ ์ ํ๋ธ์ ๋ค๋ฅธ ๋ถ์ด ๋ง๋ ์ฝ๋๋ฅผ ์ฐธ์กฐํ์ฌ ์ด๋ํฐ๋ฅผ ๊ตฌํํ๋ค๊ณ ์๊ฐํ๋๋ฐ,
AVD๋ฅผ ์คํํ๋ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๊ฐ ์ถ๋ ฅ๋์ด์ผ ํ ์์ญ์ด ๋น ํ๋ฉด์ผ๋ก ๋ ์ ํํฐ๋๊ณผ ๊ณ ๋ฏผ์ ์ค๋๊ฐ ํ๋ค.
- ์ด๋ํฐ ์์ญ์ ํํฐ๋๊ณผ ๊ฐ์ด ๊ณ ์น๋ค๊ฐ, ํน์๋ํด์ ๋ฉ์ธ ์กํฐ๋นํฐ๋ฅผ ๋ดค๋๋ฐ
mutableListOf<CardData>()๋ก ๋น ๋ฆฌ์คํธ ๊ฐ์ผ๋ก ๋๊ฐ ์ค์ ๋งํด์ฃผ๊ณ ๋๋ด๋ฒ๋ ธ๋ ๊ฒ์ด๋ค... - ์ฑ๊ธํค์ ๊ตฌํํ๊ธฐ ์ํด ์ด๊ฒ์ ๊ฒ ์๋ํ๋ ๋ฐ์ดํฐํด๋์ค ๋ถ๋ถ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
- ์์ ๊ฐ์ด ๊ตฌํ์ ํด๋๊ณ , CardData ๋ฐ์ดํฐ์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ ํจ์ CardList()๋ฅผ ์คํํ์ง ์์ ๊ฒ์ด๋ค.
- private val cardList = mutableListOf<CardData>()๋ฅผ private val cardList = CardList()๋ก ๋ณ๊ฒฝํ๋ ์ ์์ ์ผ๋ก ์คํ๋๋ค.
(2) ๊ฐ์ข ์ฝ๋์์ ๋ฌธ์
- ์๋์ ํด๋, ์์ง ๊น๋ํ ์ฝ๋๋ฅผ ์ํด ์๋ด์ผ ํ ๋ถ๋ถ์ด ๋ง์ด ๋จ์๋ค.
์ดํด๋ฅผ ์ ๋๋ก ํ์ง ๋ชปํ ์ฑ๋ก ์ธํฐ๋ท/์ ํ๋ธ/๋ค๋ฅธ ์ฝ๋๋ฅผ ์ค๊ตฌ๋๋ฐฉ์ผ๋ก ํฉ์ณ๋์ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ด๋ค. - ๋ค๋ฅธ ๋ถ์ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ฐธ์กฐํ์ฌ 'MultiModel.kt' ํ์ผ์ const val TYPE_1 = 0, TYPE_2 =0... ์ ์ ์ธํ๊ณ
์ด๋ํฐ์์ when(viewType) { TYPE_1 -> ... } ๋ฑ์ผ๋ก ๋ถ๊ธฐ์ํจ ๊ฒ์ด ์์๋ค. - ๊ทธ๋ฐ๋ฐ ํํฐ๋๊ป์๋ ๊ตณ์ด ์ด๋ ๊ฒ ํ ํ์ ์์ผ๋ฉฐ, onBindViewHolder๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ๊ณ ์๋ position(:Int)๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค๊ณ ํ์ จ๋ค. var currentItem = cardItems[position] ; when(position) { 1 -> ...} ์ด๋ฐ ์์ผ๋ก!
- ๋ํ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด setOnClickListener์ ์์น์ ๋ํ ๋ง์์ด ์์๋ค.
![](https://blog.kakaocdn.net/dn/cIb4pe/btsGEtukXVa/QY6cSS0ZkRr6P70Lp3VD50/img.png)
![](https://blog.kakaocdn.net/dn/bi8els/btsGHiY3DeL/xbTFTrdU4SejZCCRzBF5yK/img.png)
- ์ผ๋จ ๋ด๊ฐ ๊ตฌํํ ๊ฒ์ฒ๋ผ ๋ทฐํ๋ ๋ด์์ clickListener๋ฅผ ๋ฃ๋ ๊ฒ ์ข์ง ์๋ค๊ณ ํ์
จ๊ณ ,
๋ฉ์ธ ์กํฐ๋นํฐ์์ ๊ตฌํ์ ํ๋ผ๊ณ ํ์ จ๋ค. - intent์ ๋ฃ์ด์ฃผ๊ธฐ ์ํด ์ ์ธํ val context๊ฐ ๊ต์ฅํ ์ํฐํจํด์ด๋ผ๊ณ ํ๋ค.
๋์ค์ ๊ฐ๋ฐ์ด ๋ ์งํ๋๋ฉด ์ด ๋ถ๋ถ๋๋ฌธ์ ์กํฐ๋นํฐ๊ฐ ๊ทธ๋ฅ ๊บผ์ง ์๋ ์๋ค๊ณ .
(3) ์ ๋ก๋ ์๋ฃ
![](https://blog.kakaocdn.net/dn/mu8Aw/btsGFjkGfVk/dEwZiHJDrkb7YI8s6XaKb1/img.png)
- ๊นํ๋ธ README.md ์์ ์ ์๋ฃํ๋ค.
๐ญ Retrospect
์ฌ์ค ์ง๊ธ๊น์ง ์บ ํ๋ฅผ 3๋ถ์ 1 ์งํํ๋ฉด์, ์ต์ํ ํ๊ท ์ ๋์ ์ดํด๋ ฅ์ ๊ฐ์ง๊ณ ๋ฐ๋ผ๊ฐ๊ณ ์๋ค๊ณ ์๋งํ๋ค. ํํ๋ก์ ํธ๋ ์ฌ๋ฏธ์์๊ณ , ์๋กญ๊ฒ ๋ฐฐ์ด ๊ฐ๋ ๋ค์ ๋ด ์ฝ๋์ ์ ์ฉํด๊ฐ๋ฉด์ ์ด์ฐ๋๋ '1์๊ฐ ์ด๋ด'๋ก ๋ด๊ฐ ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ๊ณ , ๊ตฌํํ ์ ์์๋ค. ์ฃผ์ด์ง ๊ฐ์๋ ๊ณผ์ ๋ ํฌ๊ฒ ๋ฌด๋ฆฌ์์ด ๋ฐ๋ผ๊ฐ๊ณ ์์๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ฒ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๊ฐ ๋์๊ฒ ์๊ฐ ์ด์์ผ๋ก ์ด๋ ค์ ๋ค. ๊ธฐ์ด ๋จ๊ณ์์ '1์๊ฐ ์ด๋ด'์ ๊ณ ๋ฏผ์ ๋๋ผ ์ ์์๋๋ฐ, ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ ์ด๋ํฐ ๋ถ๋ถ์ ์ดํด๊ฐ ์ ๊ฐ์ ์ด์ ๋ฐค๋ถํฐ ์ค๋ ๋ฐค๊น์ง ๊ผฌ๋ฐ ํ๋ฃจ๋ฅผ ๊ณผ์ ๊ตฌํํ๋ ๋ฐ ์ผ๋ค.
์ฒ์์ผ๋ก ์ด๋ ค์์ ๋ด์ฐฉํ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ์ด์ ์ค๋ ์ข์ ์ ๋ง์ด ํ๋ ๊ฒ ๊ฐ์๋ฐ...
๊ทธ๋๋ง ๋คํ์ธ ๊ฑด ํํฐ๋์ด๋ ์ํํ๋ฉด์ ๋ณด๊ฒ๋ ์ ํ๋ธ์์ ๊ณตํต์ ์ผ๋ก ์ด ๋ถ๋ถ์ '์ฒ์ ์๋๋ก์ด๋๋ฅผ ๋ฐฐ์ฐ๋ฉด์ ๊ฐ์ฅ ์ด๋ ค์ ๋ ๋ถ๋ถ', '๋ณธ์ธ๋ ์ฒ์์ผ๋ก ๋๊ด์ ๋ด์ฐฉํ๋ ๋ถ๋ถ' ์ด์๋ค๋ ์๊ฒฌ์ ๊ณต์ ํด์ฃผ์ ์, ๊ทน๋ณตํ ํ์ ์ป์๋ค. ๋๋ง ์ด๋ ค์ด ๊ฒ ์๋์๋ค๋ฉด ๋๋ค.
โ