{"id":44072,"date":"2020-04-19T18:31:41","date_gmt":"2020-04-19T09:31:41","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=44072"},"modified":"2020-07-30T17:37:18","modified_gmt":"2020-07-30T08:37:18","slug":"mergeadapter-%eb%af%b8%eb%a6%ac%eb%b3%b4%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=44072","title":{"rendered":"MergeAdapter \ubbf8\ub9ac\ubcf4\uae30"},"content":{"rendered":"<p><strong>20.07.30 \ucd94\uac00\ub0b4\uc6a9<\/strong><\/p>\n<p>MergeAdapter\uac00 ConcatAdapter\ub85c \uba85\uce6d\uc774 \ubcc0\uacbd \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/KakaoTalk_Photo_2020-07-30-15-44-44.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/KakaoTalk_Photo_2020-07-30-15-44-44.png\" alt=\"\" width=\"874\" height=\"351\" class=\"aligncenter wp-image-44421 size-full\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/KakaoTalk_Photo_2020-07-30-15-44-44.png 874w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/KakaoTalk_Photo_2020-07-30-15-44-44-300x120.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/KakaoTalk_Photo_2020-07-30-15-44-44-768x308.png 768w\" sizes=\"(max-width: 874px) 100vw, 874px\" \/><\/a><\/p>\n<hr \/>\n<h1>MergeAdapter\ub780?<\/h1>\n<p>MergeAdapter\ub294 20\ub144 4\uc6d4 1\uc77c\uc5d0 \ubc30\ud3ec\ub41c recyclerview:1.2.0-alpha02\uc5d0 \ud3ec\ud568\ub41c \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\ub85c \uc5ec\ub7ec\uac1c\uc758 Adapter\ub97c \uc21c\ucc28\uc801\uc73c\ub85c \uacb0\ud569\uc2dc\ucf1c \ub2e8\uc77c RecyclerView\uc5d0 \ud45c\ud604\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc900\ub2e4.\u00a0<\/p>\n<p>\uc77c\ubc18\uc801\uc73c\ub85c Adapter\ub97c \uad6c\ud604\ud560 \ub54c \uc5ec\ub7ec \ub370\uc774\ud130 \uc18c\uc2a4\ub97c \uacb0\ud569\ud55c \ud615\ud0dc\uc758 \uc790\ub8cc\uad6c\uc870(ex. ArrayList) \ub97c \uac00\uc9c0\uace0 \uc788\uc5c8\uc73c\ub098, MergeAdapter\ub294 \uc5ec\ub7ec \ub370\uc774\ud130 \uc18c\uc2a4\ub97c \uacb0\ud569\ud558\uc5ec \ud558\ub098\uc758 Adapter\uc5d0\uc11c \uad00\ub9ac\ud558\ub294 \ub300\uc2e0 \ub370\uc774\ud130 \uc18c\uc2a4 \ubcc4\ub85c Adapter\ub97c \ubd84\ub9ac\ud558\uc5ec \uac1c\ubc1c\uc790\uac00 \uc880 \ub354 \ucf54\ub4dc\uc5d0 \uc9d1\uc911\ud558\uace0, \uc774\ub97c \uc7ac\uc0ac\uc6a9\ud558\uae30 \uc27d\ub3c4\ub85d \ucea1\uc290\ud654\ud55c\ub2e4.<\/p>\n<p><strong><em>Note: \uc544\uc9c1 Alpha \uc2a4\ud14c\uc774\uc9c0 \uc774\ubbc0\ub85c Product\uc5d0 \uc801\uc6a9\ud558\ub294 \uac83\uc740 \ucd94\ucc9c\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/em><\/strong><\/p>\n<p>MergeAdapter\ub97c \uc0ac\uc6a9\ud558\ub294 \ud55c\uac00\uc9c0 \uc6a9\ub840\ub294 \ud604\uc7ac \ub370\uc774\ud130 \ub85c\ub529 \uc0c1\ud0dc\ub97c \ud5e4\ub354\ub098 \ud478\ud130\uc5d0 \ud45c\ud604\ud558\ub294 \uac83\uc774\ub2e4. \ub124\ud2b8\uc6cc\ud06c\ub098 \ub85c\uceec \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c\ubd80\ud130 \ub370\uc774\ud130\ub97c \uac00\uc838\uc62c \ub54c \uc77c\ubc18\uc801\uc73c\ub85c \ud504\ub85c\uadf8\ub808\uc2a4\ubc14\ub97c \ub098\ud0c0\ub0b4\uac70\ub098 \ub610\ub294 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c \uc7ac\uc2dc\ub3c4 \ubc84\ud2bc\uc744 \ub098\ud0c0\ub0bc \uc218\ub3c4 \uc788\ub2e4.\u00a0<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Screenshot_20200419-172133_MergeAdapterSample.jpg\" alt=\"\" width=\"292\" height=\"600\" \/><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Screenshot_20200419-172147_MergeAdapterSample.jpg\" alt=\"\" width=\"292\" height=\"600\" \/><\/p>\n<p><a href=\"https:\/\/github.com\/Charlezz\/MergeAdapterSample\">github, \uc608\uc81c \ucf54\ub4dc \ub2e4\uc6b4\ub85c\ub4dc<\/a><\/p>\n<h2>MergeAdapter \uc124\uc815\ud558\uae30<\/h2>\n<p>app\/build.gradle \uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \uc544\ud2f0\ud329\ud2b8 ID\ub97c \ucd94\uac00\ud55c\ub2e4<\/p>\n<pre class=\"lang:null decode:true lang:\">dependencies {\r\n    implementation \"androidx.recyclerview:recyclerview:1.2.0-alpha02\"\r\n}<\/pre>\n<p>MergeAdapter\uc758 \uad6c\ud604\ubc29\ubc95\uc740 \uac04\ub2e8\ud558\ub2e4.<br \/>\n\ub9cc\uc57d HeaderAdapter, PostAdapter, FooterAdapter \ucc98\ub7fc 3\uac00\uc9c0 Adapter\uac00 \uc788\ub2e4\uace0 \uac00\uc815\ud558\uba74 \ub2e4\uc74c\ucf54\ub4dc\uc640 \uac19\uc774 MergeAdapter\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubcd1\ud569\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"lang:null decode:true lang:\">val firstAdapter: FirstAdapter = \u2026\r\nval secondAdapter: SecondAdapter = \u2026\r\nval thirdAdapter: ThirdAdapter = \u2026\r\nval mergeAdapter = MergeAdapter(firstAdapter, secondAdapter, thirdAdapter)\r\nrecyclerView.adapter = mergeAdapter<\/pre>\n<p>\uc704\uc640 \uac19\uc774 \uad6c\ud604\ud55c\ub2e4\uba74 RecyclerView\uc5d0\uc11c \uc5b4\ub311\ud130 \uc21c\uc11c\ub85c \uc544\uc774\ud15c\uc774 \ub178\ucd9c\ub41c\ub2e4.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"ph rc s t u fi ai fr\" width=\"1252\" height=\"784\" srcset=\"https:\/\/miro.medium.com\/max\/552\/0*dVXw_ylmIfbVvZkQ 276w, https:\/\/miro.medium.com\/max\/1104\/0*dVXw_ylmIfbVvZkQ 552w, https:\/\/miro.medium.com\/max\/1280\/0*dVXw_ylmIfbVvZkQ 640w, https:\/\/miro.medium.com\/max\/1400\/0*dVXw_ylmIfbVvZkQ 700w\" sizes=\"700px\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/2504\/0*dVXw_ylmIfbVvZkQ\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>MergeAdapter.Config \uc124\uc815\ud558\uae30<\/h2>\n<h3>\u00a0ViewHolder \uacf5\uc720\ud558\uae30<\/h3>\n<p>\uae30\ubcf8\uc801\uc73c\ub85c\ub294 Adapter\ub294 Adapter\uac04\uc5d0 ViewHolder\ub294 \uacf5\uc720\ud558\uc9c0 \uc54a\uace0 \uc790\uc2e0\uc774 \uc0dd\uc131\ud55c ViewHolder\ub9cc\uc744 \uc7ac\uc0ac\uc6a9\ud558\uac8c \ub41c\ub2e4.\u00a0<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Indepandant_ViewHolder_Pool.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Indepandant_ViewHolder_Pool-1024x427.png\" alt=\"\" width=\"750\" height=\"313\" class=\"aligncenter size-large wp-image-44075\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Indepandant_ViewHolder_Pool-1024x427.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Indepandant_ViewHolder_Pool-300x125.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Indepandant_ViewHolder_Pool-768x320.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Indepandant_ViewHolder_Pool.png 1064w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\ub9cc\uc57d Adapter\uac04 ViewHolder\ub97c \uacf5\uc720\ud558\uace0 \uc7ac\uc0ac\uc6a9\ud558\uace0 \uc2f6\ub2e4\uba74 MergeAdapter.Config \uac1d\uccb4\ub97c\u00a0 MergeAdapter \uc0dd\uc131\uc790 \uc778\uc790\ub85c \uc0ac\uc6a9\ud558\uba74 \ub41c\ub2e4. \ub2e4\uc74c \uc608\uc81c\ucf54\ub4dc\ub97c \ud655\uc778\ud558\uc790.<\/p>\n<pre class=\"lang: decode:true\">val config = MergeAdapter.Config.Builder()\r\n    .setIsolateViewTypes(false)\r\n    .build()\r\n\r\nmergeAdapter = MergeAdapter(config, headerAdapter, postAdapter, footerAdapter)<\/pre>\n<p>\uc774\uc81c Adapter\ub4e4\uc740 ViewHolder\ub97c \uacf5\uc720\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Shared_ViewHolder_Pool.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Shared_ViewHolder_Pool-1024x427.png\" alt=\"\" width=\"750\" height=\"313\" class=\"aligncenter size-large wp-image-44076\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Shared_ViewHolder_Pool-1024x427.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Shared_ViewHolder_Pool-300x125.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Shared_ViewHolder_Pool-768x320.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Shared_ViewHolder_Pool.png 1064w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>IsloateViewTypes\uc744 \uc124\uc815\ud558\uac8c \ub418\uba74 MergeAdapter \ub0b4\ubd80\uc5d0\uc11c\ub294 ViewHolder\ub97c \uad00\ub9ac \ud558\uae30 \uc704\ud55c \uc2a4\ud1a0\ub9ac\uc9c0\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\uc131\ud558\uac8c \ub41c\ub2e4.<\/p>\n<pre class=\"lang: decode:true\">if (config.isolateViewTypes) {\r\n    mViewTypeStorage = new ViewTypeStorage.IsolatedViewTypeStorage();\r\n} else {\r\n    mViewTypeStorage = new ViewTypeStorage.SharedIdRangeViewTypeStorage();\r\n}<\/pre>\n<h3>Stable Id \uc0ac\uc6a9\ud558\uae30<\/h3>\n<p>notifyDataSetChanged \uba54\uc11c\ub4dc\uc640 \ud568\uaed8 stable id\ub97c \uc0ac\uc6a9\ud558\ub294 \ub300\uc2e0, \ub370\uc774\ud130 \uc138\ud2b8\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc5d0 \ub300\ud574 RecyclerView\uc5d0 \ucd94\uac00 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\ub294 Adapter\uc758 \ud2b9\uc815 \uc54c\ub9bc \uc774\ubca4\ud2b8\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \ucd94\ucc9c\ud55c\ub2e4. \uc774\ub807\uac8c \ud558\uba74 RecyclerView\uc758 \ubcf4\ub2e4 \ud6a8\uc728\uc801\uc73c\ub85c \uac31\uc2e0\ud558\uba74\uc11c\ub3c4 \ub354 \ub098\uc740 \uc560\ub2c8\uba54\uc774\uc158 \ud6a8\uacfc\ub97c \ubcfc \uc218 \uc788\ub2e4. \ub9cc\uc57d ListAdapter\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \uc54c\ub9bc \uc774\ubca4\ud2b8\uac00 DiffUtil \ucf5c\ubc31\uc73c\ub85c \ucc98\ub9ac\ub41c\ub2e4.<\/p>\n<p>stable id\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0\uc5d0\ub294 MergeAdapter.Config\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub2e4\uc74c\uacfc \uac19\uc774 stable id \uc804\ub7b5\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"lang: decode:true  \">val config = MergeAdapter.Config.Builder() \r\n    .setStableIdMode(MergeAdapter.Config.StableIdMode.NO_STABLE_IDS) \r\n    .build()<\/pre>\n<h4><span>ISOLATED_STABLE_IDS\u00a0<\/span><\/h4>\n<p><span> MergeAdapter\uc5d0 \uc18d\ud574 \uc788\ub294 \ubaa8\ub4e0 Adapter\ub4e4\uc774 stable id\ub97c \ubc18\ub4dc\uc2dc \uac00\uc9c0\uace0 \uc788\uc5b4\uc57c \ud55c\ub2e4. \ub450\uac1c\uc758 \uc11c\ub85c \ub2e4\ub978 \uc5b4\ub311\ud130\ub294 \uc11c\ub85c\ub97c \uc54c\uc9c0 \ubabb\ud558\uae30 \ub54c\ubb38\uc5d0 \ub3d9\uc77c\ud55c stable id\ub97c \ubc18\ud658 \ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 MergeAdapter\ub294 \uac01 Adapter\uc758 ID\ud480\uc744 \uc11c\ub85c \ubd84\ub9ac\ud558\uc5ec RecyclerView\uc5d0\uac8c \uc804\ub2ec\ud558\uae30 \uc804\uc5d0 stable id\ub97c \ub36e\uc5b4 \uc4f4\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 ViewHolder.getItemId()\uc5d0\uc11c \ubc18\ud658\ub41c \uac12\uacfc Adapter.getItemId \uc5d0\uc11c \ubc18\ud658\ub41c \uac12\uc774 \uc11c\ub85c \ub2e4\ub97c \uc218 \uc788\ub2e4. \ub9cc\uc57d stable id\uac00 \uc5c6\ub294 \uc5b4\ub311\ud130\ub97c \uc774 \ubaa8\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud558\uac8c \ub418\uba74 IllegalArgumentException\uc774 \ubc1c\uc0dd\ud55c\ub2e4.<\/span><\/p>\n<h4 class=\"api-name\" id=\"NO_STABLE_IDS\" data-text=\"NO_STABLE_IDS\">NO_STABLE_IDS<\/h4>\n<p>MergeAdapter.Config\uc758 \uae30\ubcf8 \uac12\uc774\uba70, \uc774 \ubaa8\ub4dc\ub85c \uc124\uc815\ud55c \uacbd\uc6b0 MergeAdapter\ub294 \ud558\uc704 Adapter\uac00 \uac00\uc9c0\uace0 \uc788\ub294 stable id\ub97c \ubb34\uc2dc\ud55c\ub2e4.\u00a0<\/p>\n<h4>SHARED_STABLE_IDS<\/h4>\n<p>MergeAdapter\uc5d0 \uc18d\ud574 \uc788\ub294 \ubaa8\ub4e0 Adapter\ub4e4\uc774 stable id\ub97c \ubc18\ub4dc\uc2dc \uac00\uc9c0\uace0 \uc788\uc5b4\uc57c \ud55c\ub2e4. ISOLATED_STABLE_IDS\uc640 \ub2ec\ub9ac MergeAdapter\ub294 \ubc18\ud658\ub41c \uc544\uc774\ud15c\uc758 ID\ub97c \uc7ac\uc815\uc758 \ud558\uc9c0 \uc54a\ub294\ub2e4. \uc774 \ubaa8\ub4dc\uc5d0\uc11c\ub294 Adapters\ub4e4\uc774 \uc11c\ub85c\ub97c \uc778\uc2dd\ud558\uac8c \ub418\uace0, Adapter\uac04\uc5d0 \uc544\uc774\ud15c\uc774 \uc774\ub3d9\ud558\uc9c0 \uc54a\ub294\ud55c \ub3d9\uc77c\ud55c ID\ub97c \ubc18\ud658\ud558\uc9c0 \uc54a\uc544\uc57c \ud55c\ub2e4. stable id\uac00\uc5c6\ub294 \uc5b4\ub311\ud130\ub97c \ucd94\uac00\ud558\uba74 IllegalArgumentException\uc774 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n<h2>\uadf8 \uc678 \ub2e4\ub978 \ud2b9\uc9d5\ub4e4<\/h2>\n<h3>\ub370\uc774\ud130\uc758 \ubcc0\uacbd \uc54c\ub9bc \ubc29\uc2dd<\/h3>\n<p>MergeAdapter\uc5d0 \uc18d\ud574 \uc788\ub294 Adapter \ud558\ub098\uac00 \ub370\uc774\ud130 \ubcc0\uacbd \uc54c\ub9bc \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uba74 MergeAdapter\ub294 RecyclerView\ub97c \uac31\uc2e0\ud558\uae30 \uc804\uc5d0 \uc0c8\ub85c\uc6b4 \uc544\uc774\ud15c\uc758 \uc704\uce58\ub97c \uacc4\uc0b0\ud558\uac8c \ub41c\ub2e4.<\/p>\n<p>RecyclerView\uc758 \uad00\uc810\uc5d0\uc11c notifyItemRangeChanged\ub294 \uc544\uc774\ud15c\uc774 \ub3d9\uc77c\ud558\uace0 \ub0b4\uc6a9\ub9cc \ubcc0\uacbd\ub418\uc5c8\uc74c\uc744 \uc758\ubbf8\ud55c\ub2e4. notifyDataSetChanged \uba54\uc11c\ub4dc\ub294 \ubcc0\uacbd \uc774\uc804\uacfc \ubcc0\uacbd \uc774\ud6c4\uc758 \uad00\uacc4\uac00 \uc5c6\uc73c\ubbc0\ub85c\u00a0 notifyDataSetChanged\ub97c notifyItemRangeChanged\ub85c \ub9e4\ud551\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n<p><span>\uac1c\ubcc4\uc801\uc778 Adapter\uac00 notifyDataSetChanged\ub97c \ud638\ucd9c\ud558\uba74 MergeAdapter\ub294 notifyItemRangeChanged\uac00 \uc544\ub2cc notifyDataSetChanged\uc744 \ud638\ucd9c\ud55c\ub2e4. <\/span><\/p>\n<p><span>MergeAdapter\ub97c \uc0ac\uc6a9\ud55c\ub2e4\uba74 notifyDataSetChanged()\ub97c \uc9c1\uc811 \ud638\ucd9c\ud558\uae30 \ubcf4\ub2e4\ub294 ListAdapter \ub610\ub294 SortedList\uc640 \uac19\uc774 \uc790\ub3d9\uc73c\ub85c \uac31\uc2e0\uc744 \uc218\ud589\ud558\ub294 Adapter \uad6c\ud604\uc744 \uc0ac\uc6a9\ud558\uae30\ub97c \ucd94\ucc9c\ud55c\ub2e4.<\/span><\/p>\n<h3>ViewHolder \ud3ec\uc9c0\uc158 \ucc3e\uae30<\/h3>\n<p>\uc774\uc804\uc5d0 ViewHolder.getAdapterPosition()\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5b4\ub311\ud130\uc5d0\uc11c ViewHolder\uc758 \ud3ec\uc9c0\uc158\uc744 \uc54c \uc218 \uc788\uc5c8\uc9c0\ub9cc. \uc774\uc81c\ub294 \uc5ec\ub7ec \uc5b4\ub311\ud130\ub97c \ubcd1\ud569\ud558\ubbc0\ub85c ViewHolder.getBindingAdapterPosition() \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud3ec\uc9c0\uc158\uc744 \ucc3e\uc544\uc57c\ud55c\ub2e4.<\/p>\n<p>ViewHolder\ub97c \uacf5\uc720\ud558\ub294 \uacbd\uc6b0, ViewHolder\ub97c \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ubc14\uc778\ub529 \ud55c \uc5b4\ub311\ud130\ub97c \uc5bb\uc73c\ub824\uba74\u00a0 ViewHolder.getBindingAdapter()\ub97c \uc0ac\uc6a9\ud558\uc790.<\/p>\n<h2>\ub9c8\ubb34\ub9ac<\/h2>\n<p>\ub2e4\uc591\ud55c \ubdf0 \ub610\ub294 \ubdf0\ud640\ub354\ub97c \uc0ac\uc6a9\ud558\uc5ec RecyclerView\ub97c \uad6c\ud604\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4. \uc5ec\ub7ec\uac00\uc9c0 \ub370\uc774\ud130 \ud0c0\uc785\uc744 \ud558\ub098\uc758 \ub9ac\uc2a4\ud2b8\ub85c \uad00\ub9ac\ud558\ub294\uac8c \uc77c\ubc18\uc801\uc774\ub2e4 \ubcf4\ub2c8 \uad00\uc2ec\uc0ac \ubd84\ub9ac\uac00 \uc27d\uc9c0 \uc54a\uc558\ub294\ub370, MergeAdapter\ub97c \uc0ac\uc6a9\ud558\uba74 \uac01 \uc5b4\ub311\ud130\uc640 \ub370\uc774\ud130 \uc18c\uc2a4\ub97c \ucea1\uc290\ud654\ud558\ub294 \uac83\uc774 \uc218\uc6d4\ud574\uc9c4\ub2e4. \ud2b9\uc815 \uc5b4\ub311\ud130\uc758 \ub370\uc774\ud130\ubaa9\ub85d\ub9cc \uac31\uc2e0\ud558\uac8c \ub418\ub294 \uacbd\uc6b0 \uc720\uc9c0 \ubcf4\uc218 \uce21\uba74\uc774\ub098 \ud37c\ud3ec\uba3c\uc2a4 \uce21\uba74\uc5d0\uc11c\ub3c4 \ub9ce\uc740 \uc774\ub4dd\uc744 \uc5bb\uc744 \uac83\uc73c\ub85c \uae30\ub300\ub41c\ub2e4. (MergeAdapter\uac00 Stable \ubc84\uc804\uc73c\ub85c \ube68\ub9ac \ucd9c\uc2dc\ub418\uae38&#8230;.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>20.07.30 \ucd94\uac00\ub0b4\uc6a9 MergeAdapter\uac00 ConcatAdapter\ub85c \uba85\uce6d\uc774 \ubcc0\uacbd \ub418\uc5c8\uc2b5\ub2c8\ub2e4. MergeAdapter\ub780? MergeAdapter\ub294 20\ub144 4\uc6d4 1\uc77c\uc5d0 \ubc30\ud3ec\ub41c recyclerview:1.2.0-alpha02\uc5d0 \ud3ec\ud568\ub41c \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\ub85c \uc5ec\ub7ec\uac1c\uc758 Adapter\ub97c \uc21c\ucc28\uc801\uc73c\ub85c \uacb0\ud569\uc2dc\ucf1c \ub2e8\uc77c RecyclerView\uc5d0 \ud45c\ud604\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc900\ub2e4.\u00a0 \uc77c\ubc18\uc801\uc73c\ub85c Adapter\ub97c \uad6c\ud604\ud560 \ub54c \uc5ec\ub7ec \ub370\uc774\ud130 \uc18c\uc2a4\ub97c \uacb0\ud569\ud55c \ud615\ud0dc\uc758 \uc790\ub8cc\uad6c\uc870(ex. ArrayList) \ub97c \uac00\uc9c0\uace0 \uc788\uc5c8\uc73c\ub098, MergeAdapter\ub294 \uc5ec\ub7ec \ub370\uc774\ud130 \uc18c\uc2a4\ub97c \uacb0\ud569\ud558\uc5ec \ud558\ub098\uc758 Adapter\uc5d0\uc11c \uad00\ub9ac\ud558\ub294 \ub300\uc2e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[16],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44072"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=44072"}],"version-history":[{"count":5,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44072\/revisions"}],"predecessor-version":[{"id":44078,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44072\/revisions\/44078"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=44072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=44072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=44072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}