[ANDROID] ๋ ˆ์ด์•„์›ƒ

๊ฐœ์š” 

  1. ๋ ˆ์ด์•„์›ƒ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค.
  2. ๋ ˆ์ด์•„์›ƒ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  3. AdapterView์™€ Adapter๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€ ์ดํ•ดํ•œ๋‹ค. 

 

 

๋ ˆ์ด์•„์›ƒ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?


๋ ˆ์ด์•„์›ƒ์€ ์•ฑ์—์„œ ์‚ฌ์šฉ์ž UI๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ์˜ ๋ชจ๋“  ์š”์†Œ๋Š” View์™€ ViewGroup๋ฅผ ์ƒ์†๋ฐ›์•„ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ View๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๊ทธ๋ฆฌ๋ฉฐ ViewGroup์€ View์™€ ๋‹ค๋ฅธ ViewGroup ๊ฐ์ฒด์˜ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ฐ•์Šค ์ž…๋‹ˆ๋‹ค.

 

๋ทฐ ๊ณ„์ธต๋„

View ๊ฐ์ฒด๋Š” '์œ„์ ฏ'์ด๋ผ๊ณ  ํ•˜๊ณ  ViewGroup ๊ฐ์ฒด๋Š” '๋ ˆ์ด์•„์›ƒ'์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. View๋Š” ์—ฌ๋Ÿฌ ํ•˜์œ„ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ViewGroup์€ ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ ˆ์ด์•„์›ƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๋ณดํ†ต ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ XML๋กœ ์„ ์–ธํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. XML์—์„œ UI๋ฅผ ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” ์ฝ”๋“œ์™€ ์•ฑ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ  ์ข€ ๋” ์†์‰ฝ๊ฒŒ ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

ViewGroup ํ•˜์œ„ ํด๋ž˜์Šค

 

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์—์„œ ์ œ๊ณต๋˜๋Š” ๋ ˆ์ด์•„์›ƒ ํ˜•ํƒœ

 

๋ฐ์ดํ„ฐ๋กœ ์–ด๋Œ‘ํ„ฐ ๋ทฐ๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” 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