{"id":44709,"date":"2021-01-26T10:12:15","date_gmt":"2021-01-26T01:12:15","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=44709"},"modified":"2021-01-26T10:14:28","modified_gmt":"2021-01-26T01:14:28","slug":"groupie%eb%a1%9c-recyclerview%eb%a5%bc-%ec%89%bd%ea%b2%8c-%eb%a7%8c%eb%93%a4%ec%96%b4%eb%b3%b4%ec%9e%90","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=44709","title":{"rendered":"Groupie\ub85c RecyclerView\ub97c \uc27d\uac8c \ub9cc\ub4e4\uc5b4\ubcf4\uc790!"},"content":{"rendered":"<h1>Groupie\ub85c RecyclerView\ub97c \uc27d\uac8c \ub9cc\ub4e4\uc5b4\ubcf4\uc790!<\/h1>\n<p>RecyclerView\ub294 \ubaa9\ub85d\uc73c\ub85c \uad6c\uc131\ub41c \ud654\uba74\uc744 \ub9cc\ub4e4 \ub54c \uc0ac\uc6a9\ud558\ub294 \uc544\uc8fc \uc720\uc6a9\ud558\uace0 \uac15\ub825\ud55c \uc704\uc82f\uc774\ub2e4.<\/p>\n<p>RecyclerView\ub294 \uac70\uc758 \ubaa8\ub4e0 \uc571\uc5d0\uc11c \ud544\uc218\ub85c \uc0ac\uc6a9\ub418\uba70, \uc774\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574 \uc5b4\ub311\ud130, \ubdf0\ud640\ub354 \ub4f1\uacfc \uac19\uc740 \uac83\ub4e4\uc744 \uad6c\ud604\ud574\uc57c\ud55c\ub2e4. \uc5ec\ub7ec \ud654\uba74\uc5d0\uc11c RecyclerView\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4. \uc774\ub85c \uc778\ud574 <a href=\"https:\/\/charlezz.medium.com\/%EB%B3%B4%EC%9D%BC%EB%9F%AC%ED%94%8C%EB%A0%88%EC%9D%B4%ED%8A%B8-%EC%BD%94%EB%93%9C%EB%9E%80-boilerplate-code-83009a8d3297\">\ubcf4\uc77c\ub7ec\ud50c\ub808\uc774\ud2b8<\/a> \ucf54\ub4dc\uac00 \ub9ce\uc774 \uc0dd\uae30\ub2e4\ubcf4\ub2c8 \ub300\ubd80\ubd84\uc758 \uac1c\ubc1c\uc790\ub4e4\uc740 \ucd94\uc0c1\ud654 \ub41c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uac70\ub098 <a href=\"https:\/\/github.com\/airbnb\/epoxy\">Epoxy<\/a>\uc640 \uac19\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\uac8c \ub41c\ub2e4.\u00a0<\/p>\n<p>\uc624\ub298 \uc54c\uc544\ubcfc \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 <a href=\"https:\/\/github.com\/lisawray\/groupie\">Groupie<\/a>\ub2e4. \ubcf5\ud569\uc801\uc778 RecyclerView\ub97c \uad6c\uc131\ud558\ub294\ub370 \uc9c1\uad00\uc801\uc774\uace0 \uc720\uc5f0\ud55c \ubc29\ubc95\uc744 \uc81c\uacf5\ud558\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/01\/www.charlezz.com-groupie-recyclerview-687474703a2f2f692e696d6775722e636f6d2f6566744f4530762e676966.gif\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/01\/www.charlezz.com-groupie-recyclerview-687474703a2f2f692e696d6775722e636f6d2f6566744f4530762e676966-576x1024.gif\" alt=\"\" width=\"576\" height=\"1024\" class=\"aligncenter wp-image-44727 size-large\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/01\/www.charlezz.com-groupie-recyclerview-687474703a2f2f692e696d6775722e636f6d2f6566744f4530762e676966-576x1024.gif 576w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/01\/www.charlezz.com-groupie-recyclerview-687474703a2f2f692e696d6775722e636f6d2f6566744f4530762e676966-169x300.gif 169w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/01\/www.charlezz.com-groupie-recyclerview-687474703a2f2f692e696d6775722e636f6d2f6566744f4530762e676966-768x1365.gif 768w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/a><\/p>\n<p>\uc704 \uadf8\ub9bc\uc5d0\uc11c \ubcfc \uc218 \uc788\ub4ef, \ud5e4\ub354, \ud478\ud130, Expandable \uadf8\ub8f9 \ub4f1 \ub2e4\uc591\ud55c \uadf8\ub8f9\ubcc4\ub85c \uad00\ub9ac\ud558\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud558\uace0 \uc788\ub2e4.<\/p>\n<h2>\uc124\uc815\ud558\uae30<\/h2>\n<p>\uc544\ub798\uc758 \uc758\uc874\uc131\uc744 \uc571 \ubaa8\ub4c8\uc758 build.gradle\uc5d0 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<p>\ucd5c\uc2e0\ubc84\uc804 : <img decoding=\"async\" src=\"https:\/\/api.bintray.com\/packages\/lisawray\/maven\/groupie\/images\/download.svg\" \/><\/p>\n<pre class=\"lang: decode:true\">implementation \"com.xwray:groupie:$\ucd5c\uc2e0\ubc84\uc804\"<\/pre>\n<p>Groupie\ub294 ViewBinding \ubc0f DataBinding\ub3c4 \uc9c0\uc6d0\ud558\ubbc0\ub85c \ud544\uc694\uc5d0 \ub530\ub77c \ud574\ub2f9 \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud558\ub294 \uc758\uc874\uc131\uc744 \ucd94\uac00\ud558\uc790.<\/p>\n<pre class=\"lang: decode:true\">implementation \"com.xwray:groupie:$\ucd5c\uc2e0\ubc84\uc804\"\r\nimplementation \"com.xwray:groupie-viewbinding:$\ucd5c\uc2e0\ubc84\uc804\" <\/pre>\n<h2>\uc2dc\uc791\ud558\uae30!<\/h2>\n<h3>\uc5b4\ub311\ud130 \uc124\uc815<\/h3>\n<p>\ub2e4\ub978 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub4e4\uacfc \ub2ec\ub9ac Groupie\ub294 \uae30\ubcf8\uc801\uc778 RecyclerView \uad6c\uc131\ubc29\ubc95\uacfc \ud070 \ucc28\uc774\uac00 \uc5c6\uae30\uc5d0 \uc0ac\uc6a9\ud558\uae30\uac00 \uc27d\ub2e4.\u00a0 GroupieAdapter\ub97c \uc77c\ubc18\uc801\uc778 RecyclerView.Adapter \uc124\uc815\ud558\ub4ef\uc774 RecyclerView\uc5d0 \uc124\uc815\ud558\uc790.<\/p>\n<pre class=\"lang: decode:true \">val adapter = GroupieAdapter()\r\nrecyclerView.setAdapter(adapter)<\/pre>\n<p>\uadf8\ub8f9 \ubc0f \uc544\uc774\ud15c \ucd94\uac00\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud55c\ub2e4.<\/p>\n<pre class=\"lang: decode:true \">groupAdapter += HeaderItem()\r\ngroupAdapter += CommentItem()\r\n\r\nval section = Section()\r\nsection.setHeader(HeaderItem())\r\nsection.addAll(bodyItems)\r\ngroupAdapter += section\r\n<\/pre>\n<p>Selection\uc740 \ucf58\ud150\uce20 \ubaa9\ub85d \ub098\ub204\uace0 \uc120\ud0dd\uc801\uc73c\ub85c \uc139\uc158\ubcc4 \ud5e4\ub354, \ud478\ud130\ub97c \uc801\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>~Item\uc740 \ud558\ub098\uc758 \ud56d\ubaa9\uc744 \ub098\ud0c0\ub0b4\uba70, Item \ud074\ub798\uc2a4 \ub610\ub294 BindableItem\uc744 \uc0c1\uc18d\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h3>Item \ub9cc\ub4e4\uae30 (with DataBinding)<\/h3>\n<p>\ubdf0 \ubc14\uc778\ub529 \ub610\ub294 \ub370\uc774\ud130 \ubc14\uc778\ub529\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0\ub3c4 Item\uc744 \uad6c\uc131\ud560 \uc218 \uc788\uc9c0\ub9cc, \ubc14\uc778\ub529\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud558\ubbc0\ub85c \ubc14\uc778\ub529\uc6a9 Item\uc744 \ub9cc\ub4dc\ub294 \ubc95\uc744 \uc54c\uc544\ubcf4\uc790.<\/p>\n<pre class=\"lang:null decode:true lang:\">class UserItem(val user: User) \r\n    : BindableItem&lt;ViewUserBinding&gt;() {\r\n\r\n    override fun initializeViewBinding(view: View): ViewUserBinding {\r\n        return ViewUserBinding.bind(view)\r\n    }\r\n\r\n    override fun bind(binding: ViewUserBinding, position: Int) {\r\n        binding.user = user\r\n    }\r\n\r\n    override fun getLayout(): Int {\r\n        return R.layout.view_user\r\n    }\r\n\r\n}<\/pre>\n<ol>\n<li>getLayout()\uc744 \uc7ac\uc815\uc758\ud558\uc5ec Item\uacfc \ubc14\uc778\ub529\ub420 \ub808\uc774\uc544\uc6c3 \ub9ac\uc18c\uc2a4 \uc544\uc774\ub514\ub97c \ubc18\ud658\ud55c\ub2e4.<\/li>\n<li>initializeViewBinding()\uc744 \ud1b5\ud574 \uc804\uac1c \ub41c \ub808\uc774\uc544\uc6c3\uc744 \ubc14\uc778\ub529 \ud074\ub798\uc2a4 \uc778\uc2a4\ud134\uc2a4\ub85c \uacb0\ud569\ud55c\ub2e4.<\/li>\n<li>\uc5b4\ub311\ud130\uc5d0\uc11c \ubdf0\ud640\ub354\uac00 \ubc14\uc778\ub529\ub420 \ub54c\ub9c8\ub2e4 bind()\uac00 \ud638\ucd9c\ub418\ubbc0\ub85c \uc801\uc808\ud558\uac8c View\ub97c \ucee8\ud2b8\ub864 \ud558\uc790.<\/li>\n<\/ol>\n<p>\uae30\ubcf8\uc801\uc73c\ub85c Groupie\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ubdf0\ud640\ub354\ub97c \uc0ac\uc6a9\ud558\ubbc0\ub85c \ubdf0\ud640\ub354\ub97c \uc815\uc758\ud560 \ud544\uc694\ub294 \uc5c6\uc9c0\ub9cc, \uae30\uc874\uc758 \ubdf0\ud640\ub354\ub97c \uc7ac\uc0ac\uc6a9\ud558\uac70\ub098 \ucee4\uc2a4\ud140 \ubdf0\ud640\ub354\ub97c \uc0ac\uc6a9\ud574\uc57c\ud558\ub294 \uc0c1\ud669\uc774\ub77c\uba74 createViewHolder()\ub97c \uc7ac\uc815\uc758 \ud558\uba74\ub41c\ub2e4.<\/p>\n<h2>Conclusion<\/h2>\n<p>\uc120\uc5b8\ud615 UI\uc640\ub294 \uac70\ub9ac\uac00 \uba40\uc9c0\ub9cc \uc9c1\uad00\uc801\uc774\uae30 \ub54c\ubb38\uc5d0 \uc0ac\uc6a9\ud558\uae30 \uc27d\ub2e4. \ubcf4\uc77c\ub7ec\ud50c\ub808\uc774\ud2b8 \ucf54\ub4dc \uc791\uc131\uc744 \ud53c\ud558\uace0 \uad00\uc2ec\uc0ac\ubcc4 \ub808\uc774\uc5b4\ub9c1\uc774 \uc27d\ub2e4\ub294 \uc7a5\uc810\ub3c4 \uc788\ub2e4. github\uc758 Star \uc810\uc218\ub3c4 \ud604\uc7ac 3.1k\ub85c \ub192\uc740 \ud3b8\uc774\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Groupie\ub85c RecyclerView\ub97c \uc27d\uac8c \ub9cc\ub4e4\uc5b4\ubcf4\uc790! RecyclerView\ub294 \ubaa9\ub85d\uc73c\ub85c \uad6c\uc131\ub41c \ud654\uba74\uc744 \ub9cc\ub4e4 \ub54c \uc0ac\uc6a9\ud558\ub294 \uc544\uc8fc \uc720\uc6a9\ud558\uace0 \uac15\ub825\ud55c \uc704\uc82f\uc774\ub2e4. RecyclerView\ub294 \uac70\uc758 \ubaa8\ub4e0 \uc571\uc5d0\uc11c \ud544\uc218\ub85c \uc0ac\uc6a9\ub418\uba70, \uc774\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574 \uc5b4\ub311\ud130, \ubdf0\ud640\ub354 \ub4f1\uacfc \uac19\uc740 \uac83\ub4e4\uc744 \uad6c\ud604\ud574\uc57c\ud55c\ub2e4. \uc5ec\ub7ec \ud654\uba74\uc5d0\uc11c RecyclerView\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4. \uc774\ub85c \uc778\ud574 \ubcf4\uc77c\ub7ec\ud50c\ub808\uc774\ud2b8 \ucf54\ub4dc\uac00 \ub9ce\uc774 \uc0dd\uae30\ub2e4\ubcf4\ub2c8 \ub300\ubd80\ubd84\uc758 \uac1c\ubc1c\uc790\ub4e4\uc740 \ucd94\uc0c1\ud654 \ub41c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uac70\ub098 Epoxy\uc640 \uac19\uc740 [&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\/44709"}],"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=44709"}],"version-history":[{"count":2,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44709\/revisions"}],"predecessor-version":[{"id":44729,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44709\/revisions\/44729"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=44709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=44709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=44709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}