{"id":768,"date":"2018-09-20T16:48:02","date_gmt":"2018-09-20T07:48:02","guid":{"rendered":"http:\/\/www.charlezz.com\/?p=768"},"modified":"2022-12-05T22:18:51","modified_gmt":"2022-12-05T13:18:51","slug":"%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%eb%a1%9c-%eb%b0%b0%ec%9a%b0%eb%8a%94-%ec%9e%90%eb%b0%94%ec%9d%98-%ec%9d%b8%ed%84%b0%ed%8e%98%ec%9d%b4%ec%8a%a4-%ec%bd%9c%eb%b0%b1-%eb%a6%ac%ec%8a%a4","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=768","title":{"rendered":"\uc548\ub4dc\ub85c\uc774\ub4dc\ub85c \ubc30\uc6b0\ub294 \uc790\ubc14\uc758 \uc778\ud130\ud398\uc774\uc2a4 (\ucf5c\ubc31, \ub9ac\uc2a4\ub108, \uc635\uc800\ubc84)"},"content":{"rendered":"<h1>Before diving into interface<\/h1>\n<p>\ucd08\ubcf4 \uc790\ubc14 \uac1c\ubc1c\uc790 \ubd84\ub4e4\uc758 \ub2e8\uace8\ub85c \ud558\ub294 \uc9c8\ubb38\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><em>&#8220;\ub9ac\uc2a4\ub108(\ucf5c\ubc31)\uac00 \ubb50\uc5d0\uc694?&#8221; \ub610\ub294 &#8220;\uc778\ud130\ud398\uc774\uc2a4\uac00 \ubb54\uc9c0 \ubaa8\ub974\uaca0\uc5b4\uc694!!&#8221;<\/em><\/p>\n<p>\uc790\ubc14\uc758 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \ub300\ud55c \uac1c\ub150\uc5c6\uc774 \ub9ac\uc2a4\ub108\ub97c \uc774\ud574\ud558\ub824 \ud558\ub294\uac83\uc740 \ud5e4\uc5b4\ub098\uc62c \uc218 \uc5c6\ub294 \ub2aa\uc5d0 \ube60\uc9c4\uac83\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ucd08\ubcf4\uc790 \ubd84\ub4e4\uc744 \uc704\ud574 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uac1c\ub150\ub3c4 \uc54c\uc544\ubcf4\uace0 \uc2e4\uc81c \uc6a9\ub840\ub3c4 \uc54c\uc544\ubcf4\uace0\uc790 \uc774 \ud3ec\uc2a4\ud305\uc744 \uc791\uc131\ud569\ub2c8\ub2e4.<\/p>\n<h2>What is Interface?<\/h2>\n<p>\ud3ec\uc2a4\ud305\uc744 \uc791\uc131\ud558\uae30 \uc704\ud574 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \ub300\ud55c \uc815\uc758\ubd80\ud130 \ucc3e\uc544 \ubcf4\uc558\uc2b5\ub2c8\ub2e4.<\/p>\n<table border=\"1\" style=\"border-collapse: collapse; width: 100%; height: 94px;\">\n<tbody>\n<tr style=\"height: 94px;\">\n<td style=\"width: 100%; height: 94px;\"><span>An interface in the Java programming language is an abstract type that is used to specify a behavior that classes must implement.<br \/>\n(<\/span><span>\uc790\ubc14\ud504\ub85c\uadf8\ub798\ubc0d\uc758 \uc778\ud130\ud398\uc774\uc2a4\ub294 \ud074\ub798\uc2a4\uac00 \ubc18\ub4dc\uc2dc <strong>\uad6c\ud604<\/strong>\ud574\uc57c\ud560 <strong>\ud589\ub3d9<\/strong>\uc744 \uc9c0\uc815\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 <strong>\ucd94\uc0c1<\/strong>\ud0c0\uc785\uc774\ub2e4.\u00a0)<br \/>\n<\/span><\/p>\n<p><span>\ucd9c\ucc98 :\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Interface_(Java)\">https:\/\/en.wikipedia.org\/wiki\/Interface_(Java)<\/a><br \/>\n<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\uac1c\ubc1c\uc5d0 \ub9c9 \uc785\ubb38\ud55c \ucd08\ubcf4\uc790\uac00 \uc774 \uc815\uc758\ub97c \ubcf4\uace0 \uc774\ud574\uac00 \ub420 \uac83\uc774\ub77c\uace0\ub294 \uc0dd\uac01 \uc548\ud569\ub2c8\ub2e4. \ub108\ubb34 \uc5b4\ub824\uc6b4 \uc774\uc57c\uae30 \uc785\ub2c8\ub2e4.<\/p>\n<p>&#8220;\ubb58 \uad6c\ud604\ud55c\ub2e4\ub294\uac70\uc9c0? \ud589\ub3d9\uc740 \ubb50\uace0 \ucd94\uc0c1\uc740 \ubb58\uae4c&#8230;&#8221;<\/p>\n<p>\ud558\ub098\uc529 \ud480\uc5b4\uc11c \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>\ud589\ub3d9(Behavior)<\/h4>\n<p>\ubcf4\ud1b5 \ub2e4\ub978 \uc5b8\uc5b4\uc5d0\uc11c\ub294 <strong>\ud568\uc218<\/strong>\ub77c\ub294 \uac83\uc774 \ubcc4\ub3c4\ub85c \uc874\uc7ac\ud558\uc9c0\ub9cc, \uc790\ubc14\uc5d0\uc11c\ub294 \ud074\ub798\uc2a4\ubc16\uc5d0\uc11c \ud568\uc218\uac00 \ub530\ub85c \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \ud074\ub798\uc2a4 \ub0b4\uc5d0 \uc788\ub294 \uc5b4\ub5a4 \ud568\uc218\ub97c \uc6b0\ub9ac\ub294 <strong>\uba54\uc18c\ub4dc<\/strong>\ub77c \ubd80\ub985\ub2c8\ub2e4. \uc0ac\uc2e4 \uae30\ub2a5\uc801\uc778 \uce21\uba74\uc5d0\uc11c \ubd24\uc744\ub54c\ub294 \uba54\uc18c\ub4dc\ub098 \ud568\uc218\ub098 \uac19\uc740\uac83\uc774\uc8e0. \ud558\uc9c0\ub9cc \uc790\ubc14\uc5d0\uc11c\ub294 \uba54\uc18c\ub4dc\ub77c \ubd80\ub985\ub2c8\ub2e4. \uc774 \uba54\uc18c\ub4dc\uac00 \ubc14\ub85c \uac1d\uccb4\uc9c0\ud5a5\ud504\ub85c\uadf8\ub798\ubc0d(OOP)\uc5d0\uc11c\uc758 <strong>\ud589\ub3d9<\/strong>\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">public int sum(int a, int b) {\r\n    return a+b;\r\n}<\/pre>\n<p>\ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc\uac00 \uc788\uc744\ub54c sum\uc774\ub780 \uba54\uc18c\ub4dc\uac00 \uc788\uace0 a\uc640 b\uc778\uc790\ub97c \uc785\ub825\ubc1b\uc544 a+b\uc758 \uacb0\uacfc\uac12\uc744 \ub9ac\ud134\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. a\uc640 b\ub97c \uc785\ub825\ubc1b\uc544 \ub354\ud558\ub294 \ud589\ub3d9\uc744 \ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uacb0\uad6d sum\uc774\ub77c\ub294 \uba54\uc18c\ub4dc\uac00 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uc815\uc758\uc5d0\uc11c \ub9d0\ud55c \ud589\ub3d9\uc744 \ub73b\ud569\ub2c8\ub2e4. \uc778\ud130\ud398\uc774\uc2a4\uc5d0\uc11c\ub294 \uba54\uc18c\ub4dc(\ud589\ub3d9)\ub97c \uc815\uc758 \ud569\ub2c8\ub2e4.<\/p>\n<h4>\uad6c\ud604 (Implementation)<\/h4>\n<p>\uc790\ubc14\uc758 interface\ub294 \uc544\ub798\uc758 \uc608\uc81c\uc640 \uac19\uc740 \ud615\ud0dc\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">public interface Calculator {\r\n    int sum(int a , int b);\r\n}<\/pre>\n<p>interface\ub97c \uc815\uc758 \ud558\uae30 \uc704\ud574 class\ub300\uc2e0 interface\ub77c\ub294 \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc600\uc2b5\ub2c8\ub2e4.<br \/>\nCalculator\ub294 \uc81c\uac00 \uc815\uc758\ud55c \uc778\ud130\ud398\uc774\uc2a4\uba85\uc785\ub2c8\ub2e4. \uc778\ud130\ud398\uc774\uc2a4 Calculator{&#8230;} \ub0b4\ubd80\uc5d0\ub294 sum\uc774\ub77c\ub294 \uba54\uc18c\ub4dc\ub97c \uc815\uc758\ud558\uc600\uc9c0\ub9cc sum\uc740 \uad04\ud638{}\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. sum\uc774\ub780 \uba54\uc18c\ub4dc\ub97c \uc815\uc758\ud588\uc9c0\ub9cc\u00a0<strong>\uad6c\ud604<\/strong>\uc740 \ud558\uc9c0 \uc54a\uc740 \uac83\uc785\ub2c8\ub2e4.\u00a0 \u00a0interface\ub97c \uad6c\ud604\ud560\ub54c\ub294 \uc5b4\ub5a4 \ud074\ub798\uc2a4\uc5d0 <strong>implements<\/strong>\ub77c\ub294 \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \">public class CalculatorImpl implements Calculator {\r\n    @Override\r\n    public int sum(int a, int b) {\r\n        return a+b;\r\n    }\r\n}<\/pre>\n<table border=\"1\" style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%;\"><em>Note : \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud558\uace0\uc790 \ud55c\ub2e4\uba74, \uc778\ud130\ud398\uc774\uc2a4\ub0b4\uc758 \uc815\uc758\ub41c \uba54\uc18c\ub4dc\ub4e4\uc740 <strong>\ubc18\ub4dc\uc2dc<\/strong> \uad6c\ud604\ud574\uc57c\ud569\ub2c8\ub2e4.<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\uc704\uc640 \uac19\uc774 CalculatorImpl\uc774\ub77c\ub294 \ud074\ub798\uc2a4\uc5d0 Calculator \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud558\uc600\ub2e4\uba74 CalculatorImpl\ub85c \ub9cc\ub4e4\uc5b4\uc9c4 \uac1d\uccb4\ub294 CalculatorImpl\ud0c0\uc785\uc774\uae30\ub3c4 \ud558\uc9c0\ub9cc Caculator\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \">Calculator calc = new CalculatorImpl();<\/pre>\n<h4>\ucd94\uc0c1(abstraction)<\/h4>\n<p>\uc704\uc758 \uc608\uc81c\ucc98\ub7fc Calculator\uc5d0\uc11c \uba54\uc18c\ub4dc\ub97c \uc815\uc758\ud558\uace0 CalculatorImpl\uc5d0\uc11c \uad6c\ud604\ud558\ub294\uac70\ucc98\ub7fc, \uc5b4\ub5a0\ud55c \ud589\ub3d9\uc5d0 \ub300\ud55c \uad6c\uccb4\uc801\uc778 \uad6c\ud604\uc744 \ub098\uc911\uc73c\ub85c \ubbf8\ub8e8\ub294\uac83\uc744\u00a0\u00a0<strong>\ucd94\uc0c1<\/strong>\uc774\ub77c\uace0 \ud560 \uc218 \uc788\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc2dc \uc815\ub9ac\ud558\uc790\uba74 \ucd94\uc0c1\uc774\ub7f0\uac83\uc740 \uad6c\uccb4\uc801\uc774\uac70\ub098 \uc2e4\uccb4\ub294 \uc5c6\uace0, \ud589\ub3d9(\uba54\uc11c\ub4dc) \uc815\uc758\ub9cc \uc788\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\ucd94\uc0c1\ud654\ub97c \ud1b5\ud574 \uc790\ubc14\uc758 \ud2b9\uc9d5\uc911 \ud558\ub098\uc778 <strong>\ub2e4\ud615\uc131(<span>Polymorphism)<\/span><\/strong>\uc744 \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucd94\uc0c1\ud654\ub41c interface \uad6c\ud604\uc744 \uc5b4\ub5bb\uac8c \ud558\ub290\ub0d0\uc5d0 \ub530\ub77c\uc11c \uba54\uc18c\ub4dc\ub0b4\uc758 \ucf54\ub4dc \ub610\ub294 \ubc18\ud658\uac12\uc744 \ub2e4\ub974\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uacb0\uad6d \uac19\uc740 interface\ub97c \uad6c\ud604\ud558\ub354\ub77c\ub3c4 \ub2e4\ub978 \ud615\ud0dc\ub97c \uac00\uc9c8\uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc774\ub97c \ub2e4\ud615\uc131\uc774\ub77c \ud569\ub2c8\ub2e4. \ub2e4\ud615\uc131\uc5d0 \ub300\ud55c \uc608\uc81c\ub97c \ubcf4\uaca0\uc2b5\ub2c8\ub2e4<\/p>\n<pre class=\"lang:java decode:true\">public class CalculatorPlus3 implements Calculator {\r\n    @Override\r\n    public int sum(int a, int b) {\r\n        return a+b+3;\r\n    }\r\n}<\/pre>\n<p>CalculatorPlus3\ub77c\ub294 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5c8\uace0 \ub9c8\ucc2c\uac00\uc9c0\ub85c Calculator\ub97c \uad6c\ud604\ud558\uc600\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc544\uae4c\uc640\ub294 \ub2e4\ub974\uac8c \ubc18\ud658\uac12\uc5d0 \ud56d\uc0c1 3\uc744 \ub354\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0 CalculatorPlus3\ub85c \uc0dd\uc131\ub41c \uac1d\uccb4\ub294 \uc5ec\uc804\ud788 Calculator\ub77c\ub294 \ud0c0\uc785\uc774\uace0 sum\uc774\ub77c\ub294 \uba54\uc18c\ub4dc\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0\ub9cc \uadf8\uc5d0 \ub300\ud55c \ubc18\ud658\uac12 \ub4f1\uc740 \ub2e4\ub974\uac8c \uad6c\ud604\uc774 \ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud615\ud0dc\uac00 \ub2ec\ub77c\uc9c0\ub294\uac83\uc744 \ub2e4\ud615\uc131\uc774\ub77c \ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\ud615\uc131\uc774 \uac00\uc9c0\ub294 \uc7a5\uc810\uc73c\ub85c\ub294 \ud655\uc7a5\uc131\uc774 \uc88b\uc740 \ucf54\ub4dc\ub97c \uc791\uc131 \ud560 \uc218 \uc788\uace0, \uacb0\ud569\ub3c4\uac00 \uac15\ud558\uc9c0 \uc54a\uc740 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \ud560 \uc218 \uc788\ub2e4\ub294 \uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ucf5c\ubc31 vs \ub9ac\uc2a4\ub108 vs \uc635\uc800\ubc84<\/h2>\n<p>\uc0ac\uc2e4 \ucf54\ub4dc\ub85c\ubcf4\uba74 \uc774 \uc14b\uc740 \ub2e4 \ub611\uac19\uc544 \ubcf4\uc785\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uac1c\ub150\uc801\uc73c\ub85c \uc870\uae08 \ub2e4\ub974\uac8c \ud574\uc11d\ub429\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ucf5c\ubc31(Callback) : \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud558\uba74 \ud2b9\uc815 \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud574 \uc54c\ub824\uc900\ub2e4. (1\uac1c)<\/li>\n<li>\ub9ac\uc2a4\ub108(Listener) : \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud558\uba74 \uc5f0\uacb0\ub41c \ub9ac\uc2a4\ub108(\ud578\ub4e4\ub7ec)\ub4e4\uc5d0\uac8c \uc774\ubca4\ud2b8\ub97c \uc804\ub2ec\ud55c\ub2e4 (n\uac1c)<\/li>\n<li>\uc635\uc800\ubc84(Observer) : \ub370\uc774\ud130\ub098 \uc18d\uc131\uc758 \ubcc0\uacbd\uc744 \uac10\uc9c0\ud558\uc5ec \uad6c\ub3c5\uc790\uc5d0\uac8c \ubcc0\uacbd\uc0ac\ud56d\uc744 \uc804\ub2ec\ud55c\ub2e4.<\/li>\n<\/ul>\n<p>\uc704 \uc14b\uc740 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc774\uc6a9\ud558\uc5ec \uc774\ubca4\ud2b8\ub97c \ud1b5\uc9c0\ud55c\ub2e4\ub294 \uc810\uc5d0 \uc788\uc5b4\uc11c\ub294 \uae30\ub2a5\uc774 \uac19\uace0, \uc548\ub4dc\ub85c\uc774\ub4dc \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ub9ac\uc2a4\ub108\ub294 \uc0ac\uc2e4 n\uac1c\uac00 \uc544\ub2cc 1\uac1c\ubc16\uc5d0 \ub4f1\ub85d\uc744 \ubabb\ud55c\ub2e4\ub294 \uc810\uc5d0\uc11c \ucf5c\ubc31\uc774\ub791 \uac1c\ub150\uc774 \ud06c\uac8c \ucc28\uc774\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\uac04\ub2e8 \uc608\uc81c, \uc9c1\uc811 \ub9ac\uc2a4\ub108\ub97c \ub9cc\ub4e4\uc5b4\ubcf4\uc790<\/h3>\n<p>\uc774\ubca4\ud2b8\ub97c \uc804\ub2ec\ud558\uace0\uc790 \ud558\ub294 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \">public interface MyEventListener {\r\n    void onEvent();\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:java decode:true \">public class MainActivity extends AppCompatActivity {\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n        listener.onEvent();\r\n    }\r\n    \r\n    MyEventListener listener = new MyEventListener() {\r\n        @Override\r\n        public void onEvent() {\r\n            Toast.makeText(MainActivity.this, \"onEvent\",Toast.LENGTH_SHORT).show();\r\n        }\r\n    }; \r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>listener\ub77c\ub294 MyEventListener\uac1d\uccb4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \ud074\ub798\uc2a4 \uc5c6\uc774 \ubc14\ub85c interface\ub9cc\uc73c\ub85c\ub3c4 \uac1d\uccb4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uace0, \uc774\ub984\uc774 \uc5c6\ub294 \ud074\ub798\uc2a4\uc774\uae30 \ub54c\ubb38\uc5d0 \uc774\ub97c \uc775\uba85\ud074\ub798\uc2a4 \ub610\ub294 \ubb34\uba85\ud074\ub798\uc2a4\ub77c\uace0 \ud569\ub2c8\ub2e4.<\/p>\n<p>\ubcf4\ud1b5 View.setOnclickListener(new OnClickListener(){&#8230;}) \uc774\ub7f0\uc2dd\uc73c\ub85c View\uc5d0 \ub9ac\uc2a4\ub108\ub97c \ub2e4\ub294\ub370, \uc774\uac83\ub3c4 \ub300\ud45c\uc801\uc778 \ubb34\uba85\ud074\ub798\uc2a4\ub97c \uc774\uc6a9\ud558\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4.<\/p>\n<p>listener\uac1d\uccb4\ub97c \ud1b5\ud574 onEvent()\ub97c \ud638\ucd9c\ud558\uc5ec \ubb34\uba85\ud074\ub798\uc2a4\uac00 \uc774\ubca4\ud2b8\ub97c \uc798 \uc804\ub2ec\ubc1b\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n<h2>RecyclerView\uc758 \uc544\uc774\ud15c \ud074\ub9ad \ub9ac\uc2a4\ub108 \ub9cc\ub4e4\uae30<\/h2>\n<pre class=\"lang:java decode:true \">public interface MyItemClickListner {\r\n    void onClickMeClick(int position);\r\n    void onItemClick(int position);\r\n}<\/pre>\n<pre class=\"lang:java decode:true \">package com.charlezz.interfacestudy;\r\n\r\nimport android.support.annotation.NonNull;\r\nimport android.support.v7.widget.RecyclerView;\r\nimport android.view.LayoutInflater;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.Button;\r\nimport android.widget.TextView;\r\n\r\npublic class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.MyViewHolder&gt; {\r\n\r\n    public static final String TAG = MyAdapter.class.getSimpleName();\r\n\r\n    private MyItemClickListner listener;\r\n\r\n    public void setOnItemClickListener(MyItemClickListner listener){\r\n        this.listener = listener;\r\n    }\r\n\r\n    @NonNull\r\n    @Override\r\n    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {\r\n        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_view, viewGroup, false);\r\n        final MyViewHolder holder = new MyViewHolder(view);\r\n        holder.rootView.setOnClickListener(new View.OnClickListener() {\r\n            @Override\r\n            public void onClick(View view) {\r\n                if(listener!=null){\r\n                    listener.onItemClick(holder.getAdapterPosition());\r\n                }\r\n            }\r\n        });\r\n\r\n        holder.clickMe.setOnClickListener(new View.OnClickListener() {\r\n            @Override\r\n            public void onClick(View view) {\r\n                if(listener!=null){\r\n                    listener.onClickMeClick(holder.getAdapterPosition());\r\n                }\r\n            }\r\n        });\r\n        return holder;\r\n    }\r\n\r\n    @Override\r\n    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {\r\n        myViewHolder.textView.setText(String.format(\"%d\ubc88\uc9f8 \uc544\uc774\ud15c\", i));\r\n        myViewHolder.rootView.setBackgroundResource(i%2==0?R.color.bg01:R.color.bg02);\r\n\r\n    }\r\n\r\n    @Override\r\n    public int getItemCount() {\r\n        return 100;\r\n    }\r\n\r\n    static class MyViewHolder extends RecyclerView.ViewHolder{\r\n        Button clickMe;\r\n        TextView textView;\r\n        View rootView;\r\n\r\n        public MyViewHolder(@NonNull View itemView) {\r\n            super(itemView);\r\n            rootView = itemView;\r\n            clickMe = itemView.findViewById(R.id.click_me);\r\n            textView = itemView.findViewById(R.id.text_view);\r\n        }\r\n    }\r\n\r\n}\r\n<\/pre>\n<pre class=\"lang:java decode:true \">public class MainActivity extends AppCompatActivity implements MyItemClickListner{\r\n\r\n    RecyclerView recyclerView;\r\n    MyAdapter adapter = new MyAdapter();\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n        recyclerView = findViewById(R.id.recycler_view);\r\n        recyclerView.setAdapter(adapter);\r\n\r\n        adapter.setOnItemClickListener(this);\r\n\r\n\r\n    }\r\n\r\n    @Override\r\n    public void onClickMeClick(int position) {\r\n        Toast.makeText(MainActivity.this, String.format(\"ClickMe:%d\", position),Toast.LENGTH_SHORT).show();\r\n    }\r\n\r\n    @Override\r\n    public void onItemClick(int position) {\r\n        Toast.makeText(MainActivity.this, String.format(\"ItemClick:%d\", position),Toast.LENGTH_SHORT).show();\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537429501-576x1024.png\" alt=\"\" width=\"576\" height=\"1024\" class=\"aligncenter size-large wp-image-769\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537429501-576x1024.png 576w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537429501-169x300.png 169w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537429501-768x1365.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2018\/09\/Screenshot_1537429501.png 1080w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/p>\n<h1>Conclusion<\/h1>\n<p>\ucd5c\ub300\ud55c \uc27d\uac8c \ud480\uc5b4\uc11c \uc124\uba85\ud558\uace0\uc790 \ud588\ub294\ub370 \ub3c4\uc6c0\uc774 \ub418\uc168\uc744\uc9c0 \ubaa8\ub974\uaca0\uc2b5\ub2c8\ub2e4.<br \/>\n\uad81\uae08\ud55c\uc810\uc774\ub098 \ud2c0\ub9b0\ub0b4\uc6a9\uc774 \uc788\ub2e4\uba74 \ub313\uae00\ub85c \ub0a8\uaca8\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p>\ubcf8\ubb38\uc758 \uc608\uc81c\ub294 <a href=\"https:\/\/github.com\/charlezz\/InterfaceStudy\">github<\/a>\uc5d0\uc11c \ud655\uc778\uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before diving into interface \ucd08\ubcf4 \uc790\ubc14 \uac1c\ubc1c\uc790 \ubd84\ub4e4\uc758 \ub2e8\uace8\ub85c \ud558\ub294 \uc9c8\ubb38\uc774 \uc788\uc2b5\ub2c8\ub2e4. &#8220;\ub9ac\uc2a4\ub108(\ucf5c\ubc31)\uac00 \ubb50\uc5d0\uc694?&#8221; \ub610\ub294 &#8220;\uc778\ud130\ud398\uc774\uc2a4\uac00 \ubb54\uc9c0 \ubaa8\ub974\uaca0\uc5b4\uc694!!&#8221; \uc790\ubc14\uc758 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \ub300\ud55c \uac1c\ub150\uc5c6\uc774 \ub9ac\uc2a4\ub108\ub97c \uc774\ud574\ud558\ub824 \ud558\ub294\uac83\uc740 \ud5e4\uc5b4\ub098\uc62c \uc218 \uc5c6\ub294 \ub2aa\uc5d0 \ube60\uc9c4\uac83\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ucd08\ubcf4\uc790 \ubd84\ub4e4\uc744 \uc704\ud574 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uac1c\ub150\ub3c4 \uc54c\uc544\ubcf4\uace0 \uc2e4\uc81c \uc6a9\ub840\ub3c4 \uc54c\uc544\ubcf4\uace0\uc790 \uc774 \ud3ec\uc2a4\ud305\uc744 \uc791\uc131\ud569\ub2c8\ub2e4. What is Interface? \ud3ec\uc2a4\ud305\uc744 \uc791\uc131\ud558\uae30 \uc704\ud574 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 [&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\/768"}],"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=768"}],"version-history":[{"count":12,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/768\/revisions"}],"predecessor-version":[{"id":46317,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/768\/revisions\/46317"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=768"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=768"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}