package Ġcom . alf ian . github user app 3 . adapter Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . alf ian . github user app 3 . R Ċ import Ġcom . alf ian . github user app 3 . databinding . Item User Follow s Binding Ċ import Ġcom . alf ian . github user app 3 . datasource . User Response Ċ import Ġcom . alf ian . github user app 3 . ui . detail . Detail Activity Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ Ċ class ĠUser Follow s Adapter Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < User Follow s Adapter . My ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlist User Response Ġ= ĠArrayList < User Response >() ĊĊĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠ Ġfun Ġadd Data ToList ( items : ĠArrayList < User Response >) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist User Response . clear () ĊĠĠĠĠĠĠĠ Ġlist User Response . addAll ( items ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMy ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem User Follow s Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy ViewHolder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( list User Response [ position ]) ĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ Ġon Item Click Callback . on Item Clicked ( list User Response [ position ]) Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġlist User Response . size ĊĊĠĠĠ Ġclass ĠMy ViewHolder ( private Ġvar Ġbinding : ĠItem User Follow s Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( user Response : ĠUser Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . name . text Ġ= Ġuser Response . login ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( binding . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( user Response . avatar Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Options . placeholder Of ( R . drawable . ic _ loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. circle Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . circle ImageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( item View . context , ĠDetail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Detail Activity . KEY _ USER , Ġuser Response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Item Click Callback : ĠOn Item Click Callback ĊĊĠĠĠ Ġfun Ġset On Item Click Callback ( on Item Click Callback : ĠOn Item Click Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Item Click Callback Ġ= Ġon Item Click Callback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Item Click Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Clicked ( user : ĠUser Response ) ĊĠĠĠ Ġ} Ċ } Ċ