package Ġeth iop ia . covid . android . ui . adapter Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . text . Html Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . palette . graphics . Palette Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . engine . G lide Exception Ċ import Ġcom . bump tech . glide . request . RequestListener Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġeth iop ia . covid . android . R Ċ import Ġeth iop ia . covid . android . data . Detail Item Ċ import Ġeth iop ia . covid . android . databinding . Detail F aq Recycler Element Binding Ċ import Ġeth iop ia . covid . android . databinding . Detail Recycler Element Binding Ċ import Ġeth iop ia . covid . android . util . Utils . getCurrent Theme Ċ import Ġkotlin . math . max Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠBro ok MG Ġon Ġ 3 / 2 3 / 2 0 2 0 Ġin Ġeth iop ia . covid . android . ui . adapter Ċ Ġ* Ġinside Ġthe Ġproject ĠCo V id Et Ġ. Ċ Ġ*/ Ċ class ĠDetail Recycler Adapter ( private Ġval Ġdetails : ĠMutable List < Detail Item >) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġfun Ġadd Content ( items : ĠList < Detail Item > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprevious Position Ġ= Ġ 0 . coerce At Least ( details . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( items Ġ!= Ġnull ) Ġdetails . addAll ( items ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnow Position Ġ= Ġmax ( 0 , Ġdetails . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( previous Position , Ġnow Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTEXT _ TYPE Ġ-> ĠViewHolder ( Detail Recycler Element Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ _ AT YPE Ġ-> ĠFAQ ViewHolder ( Detail F aq Recycler Element Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠViewHolder ( Detail Recycler Element Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( getItem ViewType ( position ) Ġ== ĠTEXT _ TYPE ) Ġ( holder Ġas ĠViewHolder ). bind ( details [ position ]) Ġelse Ġif Ġ( getItem ViewType ( position ) Ġ== ĠQ _ AT YPE ) Ġ( holder Ġas ĠFAQ ViewHolder ). bind ( details [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( details [ position ]. faq Item Ġ== Ġnull ) ĠTEXT _ TYPE Ġelse ĠQ _ AT YPE ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġdetails . size ĊĊĠĠĠ Ġinternal Ġclass ĠViewHolder ( private Ġval Ġdetail Recycler Element Binding : ĠDetail Recycler Element Binding ) ĊĠĠĠĠĠĠĠ Ġ: ĠRecyclerView . ViewHolder ( detail Recycler Element Binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠDetail Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . detail Text . text Ġ= ĠHtml . from Html ( item . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . read More . visibility Ġ= Ġif Ġ( item . is Has More Button ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( getCurrent Theme ( detail Recycler Element Binding . imageView . context ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLight Ġtheme ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . detail Text . setTextColor ( Context Compat . getColor ( detail Recycler Element Binding . root . context , ĠR . color . black _ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . main Card View . set Card BackgroundColor ( Context Compat . getColor ( detail Recycler Element Binding . root . context , ĠR . color . white _ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . detail Text . setTextColor ( Context Compat . getColor ( detail Recycler Element Binding . root . context , ĠR . color . white _ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . main Card View . set Card BackgroundColor ( Context Compat . getColor ( detail Recycler Element Binding . root . context , ĠR . color . black _ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . image Link Ġ== Ġ"" Ġ&& Ġitem . image Resource Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . imageView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . imageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( detail Recycler Element Binding . imageView ). as Bitmap (). load ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . image Resource Ġ!= Ġ- 1 ) Ġitem . image Resource Ġelse Ġitem . image Link ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). addListener ( object Ġ: ĠRequest Listener < Bitmap ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Bitmap ? >, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Restricted Api ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠBitmap ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Bitmap ? >, ĠdataSource : ĠDataSource , Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resource Ġ== Ġnull ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPalette . from ( resource ). generate Ġ{ Ġpalette : ĠPalette ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmut ed Color Ġ= Ġpalette ?. light Mut ed Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvi br ant Sw atch Ġ= Ġpalette ?. dark V ibr ant Sw atch ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vi br ant Sw atch Ġ== Ġnull ) Ġvi br ant Sw atch Ġ= Ġpalette ?. dom inant Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( muted Color Ġ!= Ġnull ) Ġdetail Recycler Element Binding . detail Text . setTextColor ( muted Color . title TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . main Card View . set Card BackgroundColor ( palette ?. get Light Mut ed Color ( Color . BLACK ) Ġ?: ĠColor . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Recycler Element Binding . read More . support Background Tint List Ġ= ĠColor State List . valueOf ( palette ?. get Dark V ibr ant Color ( palette . get Dominant Color ( Color . BLUE )) Ġ?: ĠColor . BLUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vi br ant Sw atch Ġ!= Ġnull ) Ġdetail Recycler Element Binding . read More . setTextColor ( vi br ant Sw atch . title TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). into ( detail Recycler Element Binding . imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠFAQ ViewHolder ( private Ġval Ġfa q Recycler Element Binding : ĠDetail F aq Recycler Element Binding ) ĊĠĠĠĠĠĠĠ Ġ: ĠRecyclerView . ViewHolder ( faq Recycler Element Binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠDetail Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . main Card View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . expand able Container . toggle ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . question Text . text Ġ= Ġitem . faq Item ?. question ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . answer Text . text Ġ= Ġitem . faq Item ?. answer ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( getCurrent Theme ( item View . context ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLight Ġtheme ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . question Text . setTextColor ( Context Compat . getColor ( item View . context , ĠR . color . black _ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . answer Text . setTextColor ( Context Compat . getColor ( item View . context , ĠR . color . black _ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . main Card View . set Card BackgroundColor ( Context Compat . getColor ( item View . context , ĠR . color . white _ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . question Text . setTextColor ( Context Compat . getColor ( item View . context , ĠR . color . white _ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . answer Text . setTextColor ( Context Compat . getColor ( item View . context , ĠR . color . white _ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Recycler Element Binding . main Card View . set Card BackgroundColor ( Context Compat . getColor ( item View . context , ĠR . color . black _ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTEXT _ TYPE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠQ _ AT YPE Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ Ċ }