package Ġbr . com . github finder . adapters Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġbr . com . github finder . data . model . Repo Ċ import Ġbr . com . github finder . databinding . ListItem Repo Binding Ċ Ċ class ĠRepo Adapter Ġ: ĠP aging Data Adapter < Repo , ĠRecyclerView . ViewHolder >( Repo Diff CallBack ()) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRepo ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Repo Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepo Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġ( holder Ġas ĠRepo ViewHolder ). bind ( repo ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRepo ViewHolder ( ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠListItem Repo Binding Ċ ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . set ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . repo ?. let Ġ{ Ġrepo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbrowser Intent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( repo . html _ url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . context . startActivity ( browser Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind ( item : ĠRepo ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRepo Diff CallBack Ġ: ĠDiff Util . Item Callback < Repo >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠRepo , Ġnew Item : ĠRepo ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . html _ url Ġ== Ġnew Item . html _ url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠRepo , Ġnew Item : ĠRepo ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ Ċ } Ċ