package Ġcom . example . network ret rofit Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . example . network ret rofit . databinding . Activity Main Binding Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http . GET Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain Binding : ĠActivity Main Binding ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġmain Binding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( main Binding . root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠCustom Adapter () ĊĠĠĠĠĠĠĠ Ġmain Binding . re cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġmain Binding . re cyclerView . layout Manager Ġ Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRet rofit . Builder () ë¡ľ Ġëł Ī íĬ¸ ë¡ľ íķ ı ìĿĦ ĠìĥĿìĦ± íķĺê³ł Ġre tr if it Ġë³ĢìĪĺ ìĹĲ Ġëĭ ´ ìĬµëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġë² ł ìĿ´ ìĬ¤ ê°Ģ ĠëĲĺ ëĬĶ ĠGithub ìĿĺ ĠëıĦ ë© Ķ ìĿ¸ Ġì£¼ ìĨĮ ë¥¼ Ġìŀħëł¥ íķ©ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// api . github . com /") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJSON Ġëį°ìĿ´íĦ°ë¥¼ Ġìķ ŀ ìĹĲ ĠìĥĿìĦ± íķľ ĠRepository Item Ġíģ´ëŀĺìĬ¤ ìĿĺ Ġì» ¬ ëł ī ìħĺ ìľ¼ë¡ľ Ġë³Ģ íĻĺ íķ´ ì£¼ ëĬĶ Ġì»¨ ë²Ħ íĦ° ë¥¼ Ġìŀħëł¥ íķ©ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġíĺ¸ì¶ľ íķ´ ĠìĥĿìĦ± íķ©ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġmain Binding . button Request . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġìķ ŀ ìĹĲìĦľ ĠìłķìĿĺ íķľ ĠìĿ¸ íĦ° íİ ĺìĿ´ ìĬ¤ ë¥¼ ĠíĮĮ ëĿ¼ ë¯¸ íĦ° ë¡ľ ĠëĦ ĺ ê² ¨ ì£¼ ë©´ Ġìĭ¤íĸī ê°Ģ ëĬ¥ íķľ ĠìĦľë¹ĦìĬ¤ Ġê°Ŀì²´ ë¥¼ ĠìĥĿìĦ± íķ´ìĦľ Ġë°ĺíĻĺ íķ´ ì¤ į ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgithub Service Ġ= Ġretrofit . create ( Github Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgithub Service ìĹĲëĬĶ ĠGithub Service ĠìĿ¸ íĦ° íİ ĺìĿ´ ìĬ¤ ë¥¼ ĠìĿ´ìļ© íķĺìĹ¬ Ġê°Ŀì²´ ë¥¼ ĠìĥĿìĦ± íĸĪ ê¸° ĠëķĮë¬¸ìĹĲ Ġìĭ¤íĸī Ġê°ĢëĬ¥ íķľ Ġìĥģíĥľ ìĿĺ Ġuser () Ġë©Ķ ìĦľ ëĵľë¥¼ Ġê°Ģì§Ģ ê³ł ĠìŀĪìĬµëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġëł Ī íĬ¸ ë¡ľ íķ ı ìĿĺ Ġcreate () Ġë©Ķ ìĦľ ëĵľ ëĬĶ ĠìĿ¸ íĦ° íİ ĺìĿ´ ìĬ¤ ë¥¼ Ġìĭ¤íĸī Ġê°ĢëĬ¥ íķľ ĠìĦľë¹ĦìĬ¤ Ġê°Ŀì²´ ë¡ľ Ġë§Įëĵ¤ ë©´ ìĦľ Ġusers () Ġë©Ķ ìĦľ ëĵľ ĠìķĪ ìĹĲ Ġë¹Ħ ëıĻ ê¸° ĠíĨµ ìĭł ìľ¼ë¡ľ Ġëį°ìĿ´íĦ°ë¥¼ Ġê°Ģ ìł¸ ìĺ¤ ëĬĶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġenqueue () Ġë©Ķ ìĦľ ëĵľë¥¼ Ġì¶Ķê°Ģ íķ´ Ġë Ĩ ĵ ìķ ĺ ìĬµëĭĪëĭ¤ . Ġenqueue () ê°Ģ Ġíĺ¸ì¶ľ ëĲĺ ë©´ ĠíĨµ ìĭł ìĿ´ Ġìĭľìŀĳ ëĲ ©ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġenqueue () Ġë©Ķ ìĦľ ëĵľë¥¼ Ġíĺ¸ì¶ľ íķľ ĠíĽĦ ĠGithub ĠApi ĠìĦľë²Ħ ë¡ľ ë¶Ģ íĦ° ĠìĿ ĳ ëĭ µ ìĿĦ Ġë°Ľ ìľ¼ ë©´ Ġenqueue () ĠìķĪ ìĹĲ ĠìŀĳìĦ± íķĺëĬĶ Ġì ½ ľ ë° ± ĠìĿ¸ íĦ° íİ ĺìĿ´ ìĬ¤ ê°Ģ Ġìŀĳ ëıĻ íķĺê²Į ĠëĲ ©ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgithub Service . users (). enqueue ( object Ġ: ĠCallback < List < Repository Item >> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġon Response ĠíĨµ ìĭł ìĿ´ ĠìĦ± ê³µ ìłģ ìĿ¼ Ġê²½ìļ° ìĹĲ Ġìŀĳ ëıĻ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < List < Repository Item >>, Ġresponse : ĠResponse < List < Repository Item >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠëĳĲ ë²Ī ì ¨ ° ĠíĮĮ ëĿ¼ ë¯¸ íĦ° ìĿ¸ Ġresponse ìĿĺ Ġbody () Ġë©Ķ ìĦľ ëĵľë¥¼ Ġíĺ¸ì¶ľ íķĺë©´ ĠìĦľë²Ħ ë¡ľ ë¶Ģ íĦ° ĠìłĦ ìĨ ¡ ëĲľ Ġëį°ìĿ´íĦ°ë¥¼ Ġê º ¼ ëĤ ¼ ĠìĪĺ ĠìŀĪìĬµëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġê º ¼ ëĤ ¸ Ġëį°ìĿ´íĦ°ë¥¼ ĠList < Repository Item > ìľ¼ë¡ľ Ġíĺķ ë³Ģ íĻĺ ĠíĽĦ ìĹĲ Ġìĸ´ë Į ĳ íĦ° ìĿĺ Ġuser List ìĹĲ Ġëĭ ´ ìĬµëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . user List . addAll ( response . body () Ġas ĠList < Repository Item >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġìĸ´ë Į ĳ íĦ° ìĿĺ Ġnotify DataSet Changed ë¥¼ Ġíĺ¸ì¶ľ íķĺë©´ Ġë¦¬ ìĤ¬ ìĿ´ íģ ´ë Ł ¬ ë · ° ìĹĲ Ġë³Ģê²½ ëĲľ ĠìĤ¬ íķ Ń ìĿ´ Ġë°ĺ ìĺģ ëĲ ©ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < List < Repository Item >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // Ġëł Ī íĬ¸ ë¡ľ íķ ı ĠìĿ¸ íĦ° íİ ĺìĿ´ ìĬ¤ ëĬĶ Ġíĺ¸ì¶ľ Ġë°© ìĭĿ , Ġì£¼ ìĨĮ , Ġëį°ìĿ´íĦ° Ġëĵ± ìĿĦ Ġì§Ģìłķ íķ©ëĭĪëĭ¤ . Ċ // ĠRet rofit ĠëĿ¼ ìĿ´ ë¸Į ëŁ¬ ë¦¬ ëĬĶ ĠìĿ¸ íĦ° íİ ĺìĿ´ ìĬ¤ ë¥¼ Ġíķ´ ìĦĿ íķ´ ĠHTTP ĠíĨµ ìĭł ìĿĦ Ġì²ĺë¦¬ íķ©ëĭĪëĭ¤ . Ċ interface ĠGithub Service Ġ{ ĊĠĠĠ Ġ// Ġê ¹ ĥ íĹ Ī ë¸Į ĠAPI ë¥¼ Ġíĺ¸ì¶ľ íķł Ġusers Ġë©Ķ ìĦľ ëĵľë¥¼ Ġë§Įëĵ¤ ê³ł Ġ@ GET Ġìķ ł ëħ ¸ íħ ĮìĿ´ ìħĺ ìĿĦ ĠìĤ¬ìļ© íķ´ìĦľ ĠìļĶ ì²Ń Ġì£¼ ìĨĮ ë¥¼ ĠìĦ¤ìłķ íķ©ëĭĪëĭ¤ . ĊĠĠĠ Ġ@ GET (" users / Kotlin / repos ") ĊĠĠĠ Ġ// Ġë°ĺíĻĺ Ġê°Ĵ ìĿĢ ĠCall < List < ëį°ìĿ´íĦ° íģ ´ë ŀĺìĬ¤ >> Ġíĺķ íĥľ ë¡ľ ĠìŀĳìĦ± íķ©ëĭĪëĭ¤ . ĊĠĠĠ Ġfun Ġusers (): ĠCall < List < Repository Item >> Ċ Ċ }