package Ġcom . example . re pol ist . view . repos Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . re pol ist . data . model . Repository Model Ċ import Ġkotlinx . android . synt hetic . main . repo _ item _ list . view .* Ċ import Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder Ċ import Ġcom . example . re pol ist . R Ċ import Ġcom . example . re pol ist . utils . APP Constants Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ @ Experimental Cor outines Api ĊĊĊ Ċ class ĠRepo ListAdapter Ġ: ĠP aging Data Adapter < Repository Model , ĠViewHolder >( ĊĠĠĠ ĠCO MA PRE _ LIST Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . repo _ item _ list , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepo Item Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( repo Item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder Ġas ĠMy ViewHolder ). bind To ( repo Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCO MA PRE _ LIST Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Repository Model >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠRepository Model , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠRepository Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ= Ġold Item . full _ name Ġ== Ġnew Item . full _ name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠRepository Model , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠRepository Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ= Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠMy ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrepo Model : ĠRepository Model ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtxt Repo Name Ġ= ĠitemView . repo _ name ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtxt Desc Ġ= ĠitemView . repo _ desc ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtxt Fork s Count Ġ= ĠitemView . fork s _ count ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtxt Lang Type Ġ= ĠitemView . language _ type ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtxt st arg az ers Ġ= ĠitemView . st arg az ers _ count ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtxt Issue Count Ġ= ĠitemView . open _ issue _ count ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġconstraint Layout Ġ= ĠitemView . repo _ constraint _ layout ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġthis . item View . context . resources ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind To ( repos List : ĠRepository Model ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repos List Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Repository List ( repos List ) Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdisplay Repository List ( repo Model : ĠRepository Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . repo Model Ġ= Ġrepo Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Repo Name . text Ġ= Ġrepo Model . full _ name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( repo Model . description Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Desc . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Desc . text Ġ= Ġrepo Model . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġtxt Desc . visibility Ġ= ĠView . GONE ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt st arg az ers . text Ġ= Ġrepo Model . st arg az ers _ count . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Fork s Count . text Ġ= Ġrepo Model . fork s _ count . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Issue Count . text Ġ= Ġresources . getString ( R . string . str _ open _ issues , repo Model . open _ issues _ count . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( repo Model . language Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Lang Type . text Ġ= Ġrepo Model . language ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġtxt Lang Type . text Ġ= Ġresources . getString ( R . string . str _ lang ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Layout . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġbundle Of ( APP Constants . NAME Ġto Ġrepo Model . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ home Fragment _ to _ issues Fragment , Ġbundle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊĊĊ