๐Ÿ…ฐ๏ธ ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ - 4

kkominยท2023๋…„ 9์›” 22์ผ
0

Android Studio

๋ชฉ๋ก ๋ณด๊ธฐ
34/44
post-thumbnail

์‹ ๋‚œ๋‹ค~!!! ๋‚ด๊ฐ€ ํ•ด๋ƒˆ์–ด!! .โ˜†โธœ(โ‘‰ห™แ—œห™โ‘‰)โธโ™ก.

๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ๋ฒ•

SearchFragment์—์„œ ์ €์žฅํ•  ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋ฉด ์ด๊ฑธ MainActivity์˜ SearchData ํ˜•ํƒœ์˜ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ์„ ํ•˜๊ณ , SaveFragment์—์„œ recyclerview์˜ ํ•ญ๋ชฉ๋“ค์€ ์•ž์„œ ์„ ํƒํ–ˆ๋˜ ํ•ญ๋ชฉ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— MainActivity์—์„œ ์ €์žฅํ–ˆ๋˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ์ ์šฉ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.


SearchFragment

api์—์„œ ๊ฐ€์ ธ์˜จ Document ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์— ๋„ฃ์–ด์ค„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Document์„ SearchData๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


SearchAdapter

SearchFragment์—์„œ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ํ•ญ๋ชฉ๋“ค์„ MainActivity์˜ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค. mainActivtiy์— ์„ ์–ธํ–ˆ๋˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์™€ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ mData๋Š” SearchData์ด๋‹ค.

// mainActivity์— ์„ค์ •ํ–ˆ๋˜ ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜
var saveList = mutableListOf<SearchData>()


์˜ค๋ฅ˜ ๋ฐœ์ƒ

์ €์žฅ ๋ฒ„ํŠผ๋„ ์ž˜ ๋˜๋‹ˆ๊นŒ ์‹ ๋‚˜๊ฒŒ ๋ณด๊ด€ํ•จ์„ ๋ˆŒ๋ €๋Š”๋ฐ.. ์–ด? ์™œ ๊ฐ•์ œ์ข…๋ฃŒ๊ฐ€..??


adapter๊ฐ€ ์ค‘๋ณต ์„ค์ •๋˜์–ด ์žˆ์–ด ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ผ ํŒ๋‹จํ•ด adapter ์ค‘๋ณต ์—ฐ๊ฒฐ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•ด์ฃผ์—ˆ๋‹ค.

?????????????? ๋ญ์•ผ ์™œ ์•ˆ๋ผ?????


๋ฌธ์ œ ํ•ด๊ฒฐ

SaveFragment์˜ mItems์ธ Doument๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์—ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฆฌ์ŠคํŠธ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š”??

SaveAdapter ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ์™€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํ˜•์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. SaveAdapter์—์„œ๋Š” SearchData ํ˜•์‹์„ ๋ฐ›์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Documentํ˜•์‹์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์„œ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค.

์ฆ‰, SearchDocumentํ˜•์‹์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ SearcData ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ mapping ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


์ฐธ๊ณ 

๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™” ๋ฐฉ์‹์€ ์•„๋ž˜์ฒ˜๋Ÿผ ๋‘ ๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์‹์€mItems ๋ฆฌ์ŠคํŠธ๋ฅผ ์ดˆ๊ธฐํ™” ํ•ด SearchData๋ฅผ SearchDocument ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋‘ ๋ฒˆ์งธ ๋ฐฉ์‹์€ ์ƒ์„ฑ์ž์—์„œ Document๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๊ณ  ์ด๋ฅผ addAll์„ ์ด์šฉํ•ด ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ณด๊ธฐ์—๋„ ์“ฐ๊ธฐ์—๋„ ๊น”๋”ํ•œ ๋ฐฉ์‹์€ ๋‘๋ฒˆ์งธ๋ผ์„œ ์‚ฌ์šฉํ• ๊ฑฐ๋ฉด ๋‘ ๋ฒˆ์žฌ ๋ฐฉ์‹ ์ถ”์ฒœ!!!๐ŸŒŸ


์ค‘๋ณต ์ €์žฅ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

์ด์ „์— ์ €์žฅํ–ˆ๋˜ ํ•ญ๋ชฉ์ธ๋ฐ, ๋ณด๊ด€ํ•จ์— ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ๋Œ์•„์™€์„œ ๊ฒ€์ƒ‰์„ ๋ˆ„๋ฅธ ํ›„ ์ด๋ฏธ ์ €์žฅํ–ˆ๋˜ ํ•ญ๋ชฉ์˜ ์ €์žฅ์„ ๋‹ค์‹œ ๋ˆ„๋ฅผ๊ฒฝ์šฐ, ๋ณด๊ด€ํ•จ์—๋Š” ์ด๋ฏธ ๋™์ผํ•œ ํ•ญ๋ชฉ์ด ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๋™์ด ์—†์–ด์•ผ ํ•˜์ง€๋งŒ, ๋‹ค์‹œ ๋ˆ„๋ฅด๋ฉด ๋ณด๊ด€ํ•จ์— ๋™์ผํ•œ ํ•ญ๋ชฉ์ด ํ•˜๋‚˜ ๋” ์ €์žฅ์ด ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.


์ค‘๋ณต ์ €์žฅ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

MainActivity์— ์„ ํƒํ•œ ํ•ญ๋ชฉ์„ ์ €์žฅ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋„๋ก ์กฐ๊ฑด์„ ๊ฑธ์—ˆ๋Š”๋ฐ, ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ ์ค‘๋ณต์ฒดํฌ๋ฅผ ๊ฐ•ํ™”ํ•ด์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ž˜์„œ ์œ„์˜ ๊ธฐ์กด ์ฝ”๋“œ์—์„œ ์ถ”๊ฐ€๋กœ ๊ฐ•ํ™”ํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋กœ ์ˆ˜์ •ํ•ด์ฃผ์—ˆ๋‹ค.

saveList์—์„œ ํ•ด๋‹น ํ•ญ๋ชฉ์˜ url์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋งŒ ํ•ญ๋ชฉ์„ saveList์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ์งœ์ž”! ๊ธฐ์กด์— ์ถ”๊ฐ€ํ–ˆ๋˜ ํ•ญ๋ชฉ์€ ๋‹ค์‹œ ๋ˆŒ๋Ÿฌ๋„ ์ถ”๊ฐ€๋กœ ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค!


์ €์žฅ ์ทจ์†Œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

์ €์žฅ ์ทจ์†Œ ์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ €์žฅํ–ˆ๋˜ ํ•ญ๋ชฉ์ด ํ•˜๋‚˜ ๋” ์ƒ๊ธฐ๋ฉด์„œ ๊ฒฐ๊ตญ ์ €์žฅ ์ทจ์†Œ ์ „์˜ ๊ฐฏ์ˆ˜์™€ ์ทจ์†Œ ํ›„์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์ €์žฅ ์ทจ์†Œ ์˜ค๋ฅ˜ ์ˆ˜์ •

ํ™”๋ฉด์„ ํ‘œ์‹œํ• ๋•Œ๋Š” SearchDocument๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ ํ˜„์žฌ ์ฝ”๋“œ์—์„œ ์ œ๊ฑฐ๋˜๋Š” ๊ฒƒ์€ SearchData ๋ฆฌ์ŠคํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์žˆ๋‹ค. mItems ๋ฆฌ์ŠคํŠธ์™€ mData ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, mData ๋ฆฌ์ŠคํŠธ์™€ mItems ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ 4์ธ ์ƒํƒœ์—์„œ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•˜๋ฉด mData ๋ฆฌ์ŠคํŠธ๋Š” 3๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ , notifyItemRemoved(position)์ด ํ˜ธ์ถœ๋˜์–ด RecyclerView์—์„œ๋„ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋˜์ง€๋งŒ, mItems ๋ฆฌ์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ 4๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ฆ‰, removeAt ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ mData์™€ mItems์˜ ๋ฆฌ์ŠคํŠธ์˜ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ํ‚ค๋ณด๋“œ ๋‚ด๋ฆฌ๊ธฐ

๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๊ฒ€์ƒ‰๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ๊ทธ๋Œ€๋กœ ์กด์žฌํ•ด ๋ณด๊ธฐ ๋ถˆํŽธํ•˜๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ๊ฒ€์ƒ‰๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ์‚ฌ๋ผ์ง€๋„๋ก hideKeyboard ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ๊ณ  ์ด๋ฅผ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์ฒ˜๋ฆฌ๋˜๋„๋ก ์ ์šฉํ•ด์ฃผ์—ˆ๋‹ค.

ํ™•์‹คํžˆ ์ด๊ฒŒ ํ›จ์”ฌ ๋ณด๊ธฐ ํŽธํ•œ๋“ฏ!!!!


์ด์ „ ํ…์ŠคํŠธ ์ œ๊ฑฐ

๊ฒ€์ƒ‰์ฐฝ์— ์ž…๋ ฅ ํ•˜๊ณ  ์ถ”ํ›„ ๊ฒ€์ƒ‰ ์ฐฝ์„ ์„ ํƒํ•˜๋ฉด ์ด์ „์— ์ž…๋ ฅํ–ˆ๋˜ ํ…์ŠคํŠธ๊ฐ€ ์ œ๊ฑฐ๋˜๋„๋ก ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.

profile
์†Œ์†Œํ•œ ์ฝ”๋”ฉ ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€