package Ġcom . bins . try z . ui . main Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bins . common . load Image Ċ import Ġcom . bins . try z . R Ċ import Ġcom . bins . try z . databinding . Repo Item Binding Ċ import Ġcom . bins . try z . entity . S quire Repo Ċ import Ġcom . facebook . shim mer . Sh im mer Frame Layout Ċ Ċ const Ġval ĠSH IM MER Ġ= Ġ 0 Ċ const Ġval ĠDATA Ġ= Ġ 1 Ċ class ĠRepo Adapter Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdata List Ġ= Ġmutable ListOf < S quire Repo ?> () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif ( SH IM MER Ġ== Ġview Type ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . shim mer _ item , null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSh im mer ViewHolder ( view ) ĊĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Item Binding : ĠRepo Item Binding Ġ= ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . repo _ item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠData ViewHolder ( data Item Binding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( data List [ position ] Ġ== Ġnull ) ĠSH IM MER Ġelse ĠDATA ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( holder Ġis ĠData ViewHolder ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( data List [ position ]) ĊĠĠĠĠĠĠĠ Ġ} else Ġ Ġif ( holder Ġis ĠSh im mer ViewHolder ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġdata List . count () ĊĊĠĠĠ Ġfun Ġupdate List ( list : ĠList < S quire Repo ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠ Ġdata List . addAll ( list ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSh im mer ViewHolder ( private Ġvar Ġview : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠ Ġfun Ġbind (){ ĊĠĠĠĠĠĠĠ Ġ( view Ġas ĠSh im mer Frame Layout ). start Sh im mer Animation () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠData ViewHolder ( private Ġvar Ġbinding : ĠRepo Item Binding ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind ( data Item : ĠS quire Repo ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . trend ing Repo Ġ= ĠRepo Item VM ( data Item , binding . root . resources ) ĊĠĠĠĠĠĠĠ Ġbinding . avatar Image . load Image ( data Item ?. avatar _ url ? :" ") ĊĠĠĠ Ġ} Ċ }