[Android ๊ธฐ์ดˆ] 10. Adapter View, Adapter
๋ฐ˜์‘ํ˜•

 

 

 

 

 

Adpater View

 

์ถœ์ฒ˜: ๊ผฌ์Šฌ๊ผฌ์Šฌ Convergence
์ถœ์ฒ˜: Medium

 

 

 

 

1. ์–ด๋Œ‘ํ„ฐ ๋ทฐ (Adapter View)

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ๋‚˜์—ดํ•˜๊ณ  ์„ ํƒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ทฐ
        - ๋ฆฌ์ŠคํŠธ๋ทฐ(ListView)๋Š” ํ•ญ๋ชฉ์„ ์ˆ˜์ง์œผ๋กœ ๋‚˜์—ด์‹œํ‚ค๋Š” ๋ฐฉ์‹
        - ๊ทธ๋ฆฌ๋“œ๋ทฐ(GridView)๋Š” ํ•ญ๋ชฉ์„ ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ๋‚˜์—ด์‹œํ‚ค๋Š” ๋ฐฉ์‹
  • ์–ด๋Œ‘ํ„ฐ ๋ทฐ๋Š” ํ‘œ์‹œํ•  ํ•ญ๋ชฉ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ , ์–ด๋Œ‘ํ„ฐ๋ผ๋Š” ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๊ณต๊ธ‰ ๋ฐ›์Œ
  • ์–ด๋Œ‘ํ„ฐ์— ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์š”์ฒญ, ํ•ญ๋ชฉ๋ทฐ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์„ ํƒ๋œ ํ•ญ๋ชฉ๋ทฐ๋ฅผ ์ฒ˜๋ฆฌ

 

 

 

 

2. ์–ด๋Œ‘ํ„ฐ (Adapter)

์ถœ์ฒ˜: ์žฅ๋ฒ”์„๋‹˜

  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์›๋ณธ๊ณผ ์–ด๋Œ‘ํ„ฐ๋ทฐ(ListView, GridView) ์‚ฌ์ด์˜ ์ค‘๊ณ„ ์—ญํ• 
  • ์–ด๋Œ‘ํ„ฐ๋ทฐ๊ฐ€ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•
        1. ์–ด๋Œ‘ํ„ฐ๋ทฐ๊ฐ€ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์›๋ณธ์ด ์–ด๋Œ‘ํ„ฐ์— ์„ค์ •, ์–ด๋Œ‘ํ„ฐ๋ทฐ์—๋Š” ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์„ค์ •
        2. ์–ด๋Œ‘ํ„ฐ๋ทฐ๋Š” ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ‘œ์‹œํ•  ํ•ญ๋ชฉ์˜ ์ด ๊ฐœ์ˆ˜ ํ•„์š”
            (์–ด๋Œ‘ํ„ฐ์˜ getCount() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜)
        3. ์–ด๋Œ‘ํ„ฐ ๋ทฐ๋Š” ์–ด๋Œ‘ํ„ฐ์˜ getView() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ํ™”๋ฉด์— ์‹ค์ œ๋กœ ํ‘œ์‹œํ•  ํ•ญ๋ชฉ๋ทฐ๋ฅผ ์–ป๊ณ , ์ด๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œ
  • ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋Œ‘ํ„ฐ๋ทฐ์˜ ํŠน์ • ์œ„์น˜์˜ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์˜€์„ ๋•Œ, ์–ด๋Œ‘ํ„ฐ๋ทฐ๋Š” ์„ ํƒ๋œ ํ•ญ๋ชฉ, ํ•ญ๋ชฉID, ํ•ญ๋ชฉ๋ทฐ๋ฅผ ์–ด๋Œ‘ํ„ฐ์˜ getItem(), getItemId(), getView() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์–ป์–ด์™€์„œ ์ด๋ฅผ ํ•ญ๋ชฉ์„ ํƒ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ์— ๋„˜๊ฒจ์คŒ

 

 

 

 

3. ์–ด๋Œ‘ํ„ฐ ์ข…๋ฅ˜

์ถœ์ฒ˜: ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ

 

๊ฐ ์–ด๋Œ‘ํ„ฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ๋ฐ์ดํ„ฐ ํ‘œ์‹œ ๋ฐฉ๋ฒ•์— ๋งž๊ฒŒ ์„ค๊ณ„
์ด๋Ÿฌํ•œ ์–ด๋Œ‘ํ„ฐ๋“ค์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Œ

 

1) BaseAdapter

  • ์–ด๋Œ‘ํ„ฐ ํด๋ž˜์Šค์˜ ๊ณตํ†ต์ ์ธ ๊ธฐ๋ณธ ๊ตฌํ˜„ (Android SDK์—์„œ ์ œ๊ณตํ•˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค)
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉ์ž ์ •์˜ ์–ด๋Œ‘ํ„ฐ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ
  • getView(), getItem(), getItemId(), getCount()์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์™€ ๋ทฐ๋ฅผ ์—ฐ๊ฒฐ

 

2) ArrayAdapter

  • ๊ฐ์ฒด ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์†Œ์Šค์— ์ •์˜๋œ ๋ฐฐ์—ด๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ํ‘œ์‹œํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ
  • ์ฃผ๋กœ ListView, Spinner ๋“ฑ์˜ AdapterView์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ArrayAdapter(Context context, int resource, T[] objects) ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  • ๋ฌธ์ž์—ด ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฆฌ์ŠคํŠธ๋ทฐ์— ํ‘œ์‹œํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ

 

3) CursorAdapter

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฆฌ์ŠคํŠธ๋‚˜ ์Šคํ”ผ๋„ˆ ๋“ฑ์— ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์ธ Cursor๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ CursorAdapter(Context context, Cursor c) ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ • ์ปฌ๋Ÿผ์„ ๋ทฐ์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ปฌ๋Ÿผ ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ๊ฐ€๊ณตํ•˜์—ฌ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Œ

 

4) SimpleAdapter

  • ๋ฐ์ดํ„ฐ๋ฅผ Map(ํ‚ค, ๊ฐ’)์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ด๋ฅผ XML ํŒŒ์ผ์— ์ •์˜๋œ ๋ทฐ์— ๋งคํ•‘ํ•˜์—ฌ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • ๋ฐ์ดํ„ฐ์™€ ๋ทฐ๋ฅผ ์ง์ ‘ ๋งคํ•‘ํ•˜๋Š” ๋ฐ ์œ ์šฉ
  • ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ์—๋Š” ์ œํ•œ์ด ์žˆ์Œ
  • SimpleAdapter(Context context, List> data, int resource, String[] from, int[] to) ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  • ๋ฐ์ดํ„ฐ๋ฅผ Map์œผ๋กœ ์ •์˜ํ•˜๊ณ , ํ•ด๋‹น Map์˜ ํ‚ค ๊ฐ’์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ์— ๋งคํ•‘

 

 

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T