package Ġcom . fut ab oo o . android . book life . screen . search Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . fut ab oo o . android . book life . R Ċ import Ġcom . fut ab oo o . android . book life . databinding . Component Loading Binding Ċ import Ġcom . fut ab oo o . android . book life . databinding . Component SearchResult Card View Binding Ċ import Ġcom . fut ab oo o . android . book life . model . Book Ċ import Ġcom . fut ab oo o . android . book life . model . SearchResult Resource Ċ Ċ class ĠSearch Result Adapter ( ĊĠ Ġval Ġresources : ĠMutable List < SearchResult Resource >, ĊĠ Ġval Ġlistener : Ġ( View , ĠBook ) Ġ-> ĠUnit Ċ ) Ġ: ĠRecyclerView . Adapter < SearchResult Adapter . ViewHolder >() Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠLO ADING Ġ= Ġ 0 ĊĠĠĠ Ġconst Ġval ĠCONTENT S Ġ= Ġ 1 ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġshow Progress Ġ= Ġfalse ĊĊĠ Ġoverride Ġfun ĠonCreate ViewHolder ( ĊĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠ Ġview Type : ĠInt ĊĠ Ġ): ĠViewHolder Ġ{ ĊĠĠĠ Ġif Ġ( view Type Ġ== ĠLO ADING ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠViewHolder ( Component Loading Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse )) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġreturn ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠ ĠComponent SearchResult Card View Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġas ĠComponent SearchResult Card View Binding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( it . findViewById ( R . id . search _ result _ book _ thumbnail ), Ġresources [ adapter Position ]. contents . book ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . search Result Book Action . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( it , Ġresources [ adapter Position ]. contents . book ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Bind ViewHolder ( ĊĠĠĠ Ġholder : ĠViewHolder , ĊĠĠĠ Ġposition : ĠInt ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġwhen Ġ( holder . binding ) Ġ{ ĊĠĠĠĠĠ Ġis ĠComponent Loading Binding Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( holder . binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Progress ) ĠprogressBar . visibility Ġ= ĠView . VISIBLE Ġelse ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠComponent SearchResult Card View Binding Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġresources [ position ]. contents . book ĊĠĠĠĠĠĠĠ Ġwith ( holder . binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠG lide . with ( root . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( book . imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( search Result Book Thumbnail ) ĊĠĠĠĠĠĠĠĠĠ Ġsearch Result Book Title . text Ġ= Ġbook . title ĊĠĠĠĠĠĠĠĠĠ Ġsearch Result Book Author . text Ġ= Ġbook . author . name ĊĠĠĠĠĠĠĠĠĠ Ġsearch Result Book Read ers . text Ġ= Ġbook . registration Count . toString () ĊĠĠĠĠĠĠĠĠĠ Ġval Ġmark Ġ= Ġresources [ position ]. status Text ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( mark . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result Book Read Mark . text Ġ= Ġmark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result Book Read Mark . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result Book Read Mark . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġif Ġ( resources . size Ġ== Ġ 0 ) Ġ 0 Ġelse Ġresources . size Ġ+ Ġ 1 ĊĊĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ) Ġ= ĊĠĠĠ Ġif Ġ( position Ġ!= Ġ 0 Ġ&& Ġposition Ġ== Ġitem Count Ġ- Ġ 1 ) Ġ- 1 Ġelse Ġsuper . getItem Id ( position ) ĊĊĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ) Ġ= ĊĠĠĠ Ġif Ġ( position Ġ!= Ġ 0 Ġ&& Ġposition Ġ== Ġitem Count Ġ- Ġ 1 ) ĠLO ADING Ġelse ĠCONTENT S ĊĊĠ Ġfun Ġadd All ( list : ĠMutable List < SearchResult Resource >) Ġ{ ĊĠĠĠ Ġval Ġadd Index Ġ= Ġif Ġ( resources . last Index Ġ< Ġ 0 ) Ġ 0 Ġelse Ġresources . last Index Ġ+ Ġ 1 ĊĠĠĠ Ġresources . addAll ( addIndex , Ġlist ) ĊĠĠĠ Ġnotify Item Range Inserted ( addIndex , Ġlist . size ) ĊĠ Ġ} ĊĊĠ Ġfun Ġclear () Ġ{ ĊĠĠĠ Ġresources . clear () ĊĠĠĠ Ġnotify DataSet Changed () ĊĠ Ġ} ĊĊĠ Ġfun Ġshow Progress ( show : ĠBoolean ) Ġ{ ĊĠĠĠ Ġshow Progress Ġ= Ġshow ĊĠĠĠ Ġnotify Item Changed ( resources . size ) ĊĠ Ġ} ĊĊĠ Ġclass ĠViewHolder ( val Ġbinding : ĠView Data Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ċ } Ċ