๊ฐ์
- ๋ ์ด์์์ด ๋ฌด์์ธ์ง ์ดํดํ๋ค.
- ๋ ์ด์์์ ์ ์ฒด์ ์ธ ํ๋ฆ์ ๋ํด ์ดํดํ๋ค.
- AdapterView์ Adapter๊ฐ ์ ํ์ํ์ง ์ดํดํ๋ค.
๋ ์ด์์์ด๋ ๋ฌด์์ผ๊น?
๋ ์ด์์์ ์ฑ์์ ์ฌ์ฉ์ UI๋ฅผ ์ํ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค. ๋ ์ด์์์ ๋ชจ๋ ์์๋ View์ ViewGroup๋ฅผ ์์๋ฐ์ ๋น๋๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก View๋ ์ฌ์ฉ์์ ์ํธ์์ฉํ ์ ์๋ ๊ฒ๋ค์ ๊ทธ๋ฆฌ๋ฉฐ ViewGroup์ View์ ๋ค๋ฅธ ViewGroup ๊ฐ์ฒด์ ๋ ์ด์์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ปจํ ์ด๋ ๋ฐ์ค ์ ๋๋ค.
View ๊ฐ์ฒด๋ '์์ ฏ'์ด๋ผ๊ณ ํ๊ณ ViewGroup ๊ฐ์ฒด๋ '๋ ์ด์์'์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. View๋ ์ฌ๋ฌ ํ์ ํด๋์ค ์ค ํ๋๊ฐ ๋ ์ ์์ผ๋ฉฐ, ViewGroup์ ๋ค์ํ ๋ ์ด์์ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ ์ด์์ ์ค ํ๋์ ๋๋ค. ๋ ์ด์์์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์์ง๋ง ๋ณดํต ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ XML๋ก ์ ์ธํ๋ ๋ฐฉ์์ ๋๋ค. XML์์ UI๋ฅผ ์ ์ธํ๊ฒ ๋๋ฉด ๋์์ ์ ์ดํ๋ ์ฝ๋์ ์ฑ์ ํํํ๋ ๊ฒ์ ๋ถ๋ฆฌํ ์ ์๊ณ ์ข ๋ ์์ฝ๊ฒ ๋ค์ํ ๋ ์ด์์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
ViewGroup ํด๋์ค์ ๊ฐ ํ์ ํด๋์ค๋ค์ ๊ฐ๊ธฐ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก ์์ ์์ ์ค์ฒฉ๋ ๋ทฐ๋ฅผ ํ์ํฉ๋๋ค. ๋ํ์ ์ผ๋ก ์ ํ ๋ ์ด์์, ์๋์ ๋ ์ด์์, ์น ๋ทฐ๊ฐ ์ ๊ณต๋๋ฉฐ ํ๋ ์ด์์ ๋ ์ด์์์ ๋ ๋ค๋ฅธ ๋ ์ด์์์ ์ค์ฒฉํ์ฌ ํน๋ณํ UI ๋์์ธ์ ์ด๋ฃฐ ์ ์์ง๋ง, ๋ ์ด์์ ๊ณ์ธต์ ๊ฐ๋ฅํ ์๊ฒ ์ ์งํด์ผ ๋ ์ด์์์ด ๋์ฑ ๋น ๋ฅด๊ฒ ๊ทธ๋ ค์ง ์ ์์ต๋๋ค.
View์ ViewGroup์ XML ํน์ฑ
๋ชจ๋ View์ ViewGroup ๊ฐ์ฒด๋ ๊ณ ์ ํ ์ฌ๋ฌ ๊ฐ์ง XML ํน์ฑ์ ์ง์ํฉ๋๋ค. ์ด๋ค ํน์ฑ์ ํน์ View ๊ฐ์ฒด์๋ง ์ ์ฉ๋์ง๋ง, ์ด ํน์ฑ์ ํน์ View ๊ฐ์ฒด๋ก๋ถํฐ ์์๋ฐ์ ๊ฒ(์ : TextView์ textSize)์ด๋ฏ๋ก ๋ชจ๋ View ๊ฐ์ฒด์๊ฒ ๊ณต์ ๋์ง ์์ต๋๋ค. ๋ฐ๋ฉด์ ์ด๋ค ํน์ฑ์ ๋ฃจํธ View ํด๋์ค์์ ์์๋๊ธฐ ๋๋ฌธ์(์ : id ํน์ฑ) ๋ชจ๋ View ๊ฐ์ฒด์ ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
View ๊ฐ์ฒด๋ ํธ๋ฆฌ ๋ด์์ ๋ทฐ๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ ์ ์ ID๊ฐ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค. ์ฑ์ ์ปดํ์ผํ ๋ ์ด ID๋ ์ ์๋ก ์ฐธ์กฐ๋์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก XML ํ์ผ์ id ํน์ฑ์ ์์ฑํ ๋๋ ๋ฌธ์์ด๋ก ์์ฑํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๋ชจ๋ View ๊ฐ์ฒด๊ฐ ๊ณตํต์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ํน์ฑ์ด๋ฏ๋ก ๋งค์ฐ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ ์ ๋ง ํ์์ ์ผ๋ก ์๊ณ ์์ด์ผ ํ ํน์ฑ ์ค ํ๋์ ๋๋ค.
์ด๋ํฐ
๋ ์ด์์์ ์ปจํ ์ธ ๊ฐ ๋์ ์ด๊ฑฐ๋ ๋ฏธ๋ฆฌ ์ ์๋์ง ์์ ๊ฒฝ์ฐ, AdapterView์ ํ์ ํด๋์ค์ธ ๋ ์ด์์๋ค์ ์ฌ์ฉํ์ฌ ์ฑ ๋ฐํ์์ ๋ทฐ๋ก ๋ ์ด์์์ ์ฑ์ธ ์ ์์ต๋๋ค. AdapterView์ ํ์ ํด๋์ค๋ Adapter๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๋ ์ด์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉํ์ฌ ํํํ ์ ์์ต๋๋ค. Adapter๊ฐ ๋ฐ์ดํฐ๋ค๊ณผ AdapterView ๋ ์ด์์ ์ฌ์ด์ ์ค๊ฐ์ ์ญํ ์ ํฉ๋๋ค. ์ฆ, Adapter๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ฐ ํญ๋ชฉ์ ๋ทฐ๋ก ๋ณํํ์ฌ AdapterView ๋ ์ด์์์ ์ถ๊ฐ๋ ์ ์๋๋ก ํฉ๋๋ค.
๋ฐ์ดํฐ๋ก ์ด๋ํฐ ๋ทฐ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด์๋ AdapterView ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ Adapter์ ์ฐ๊ฒฐ์์ผ์ฃผ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Adapter๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ฐ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ํ๋ด๋ View๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค. ๋ณดํต ๋ฐ์ดํฐ๊ฐ ๊ต์ฅํ ๋ค์ํ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก Android๋ ๋ฐ์ดํฐ์ ์์กด์ ์ธ ๋ค์ํ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ์ ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ํ ArrayAdapter์ Cursor๋ฅผ ์ํ SimpleCursorAdapter ํด๋์ค๊ฐ ์์ต๋๋ค.
Reference
https://developer.android.com/guide/topics/ui/declaring-layout?hl=ko
๋ ์ด์์ | Android ๊ฐ๋ฐ์ | Android Developers
A layout defines the visual structure for a user interface, such as the UI for an activity or app widget . You can declare a layout in two ways: The Android framework gives you the flexibility to use either or both of these methods for declaring and managi
developer.android.com