package Ġcom . merc ad ol ib re . android . an des ui . list . utils Ċ Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . merc ad ol ib re . android . an des ui . R Ċ import Ġcom . merc ad ol ib re . android . an des ui . list . An des List Ċ import Ġcom . merc ad ol ib re . android . an des ui . list . An des ListView Item Ċ import Ġcom . merc ad ol ib re . android . an des ui . list . An des ListView Item Che vron Ċ import Ġcom . merc ad ol ib re . android . an des ui . list . An des ListView Item Simple Ċ import Ġcom . merc ad ol ib re . android . an des ui . list . type . An des ListType Ċ import Ġcom . merc ad ol ib re . android . an des ui . thumbnail . An des Thumbnail Ċ import Ġcom . merc ad ol ib re . android . an des ui . type face . getFont OrDefault ĊĊ Ċ class ĠAn des ListAdapter ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġan des List : ĠAn des List , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdelegate : ĠAn des List Delegate , ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlist Type : ĠAn des ListType Ċ ) Ġ: ĠRecyclerView . Adapter < An des ListAdapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS IMP LE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHE VR ON Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHECK _ BOX Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRAD IO _ BUTTON Ġ= Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġdelegate . getData SetSize ( an des List ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( an des List , Ġdelegate , Ġposition ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS IMP LE Ġ-> ĠR . layout . an des _ layout _ list _ item _ simple ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCHE VR ON Ġ-> ĠR . layout . an des _ layout _ list _ item _ chevron ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCHECK _ BOX Ġ-> ĠR . layout . an des _ layout _ list _ item _ check _ box ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRAD IO _ BUTTON Ġ-> ĠR . layout . an des _ layout _ list _ item _ radio _ button ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . layout . an des _ layout _ list _ item _ simple ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( LayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( layout , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( list Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAn des ListType . SIMPLE Ġ-> ĠS IMP LE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAn des ListType . CHE VR ON Ġ-> ĠCHE VR ON ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAn des ListType . CHECK _ BOX Ġ-> ĠCHECK _ BOX ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAn des ListType . RADIO _ BUTTON Ġ-> ĠRAD IO _ BUTTON ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġchange An des ListType ( list Type : ĠAn des ListType ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . list Type Ġ= Ġlist Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġtitle TextView : ĠTextView ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġsubtitle TextView : ĠTextView ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġspace Title Subtitle View : ĠView ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġan des ListItem Container : ĠView ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġan des ListItem Selection View : ĠView ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġan des ListItem Avatar : ĠAn des Thumbnail ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġan des ListItem Icon : ĠImageView ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġan des View Thumbnail Separator : ĠView ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( an des List : ĠAn des List , Ġdelegate : ĠAn des List Delegate , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan des ListItem Config Ġ= Ġdelegate . bind ( an des List , ĠitemView , Ġposition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġdelegate . on Item Click ( an des List , Ġposition ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Common Views ById () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Common View Values () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( an des ListItem Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAn des ListView Item Simple Ġ-> Ġbind Simple Item ( an des ListItem Config ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAn des ListView Item Che vron Ġ-> Ġbind Che vron Item ( an des ListItem Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBuild ĠAn des ĠList Ġitem Ġbased Ġon ĠAn des ListView Item Ġconfiguration Ġfor Ġtype ĠS IMP LE ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Config Ġcurrent ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbind Simple Item ( item Config : ĠAn des ListView Item Simple ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind Item Common s ( item Config ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBuild ĠAn des ĠList Ġitem Ġbased Ġon ĠAn des ListView Item Ġconfiguration Ġfor Ġtype ĠCHE VR ON ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Config Ġcurrent ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbind Che vron Item ( item Config : ĠAn des ListView Item Che vron ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind Item Common s ( item Config ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan des ListItem Che vron : ĠImageView Ġ= ĠitemView . findViewById ( R . id . an des _ thumbnail _ chevron ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Che vron Ġ= Ġan des ListItem Che vron . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Che vron . height Ġ= Ġitem Config . chevron Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Che vron . width Ġ= Ġitem Config . chevron Size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset View Item Position ( an des ListItem Che vron ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Che vron Top Margin ( item Config , Ġan des ListItem Che vron ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġfind Common Views ById () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView Ġ= ĠitemView . findViewById ( R . id . text _ view _ item _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView Ġ= ĠitemView . findViewById ( R . id . text _ view _ item _ sub _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Title Subtitle View Ġ= ĠitemView . findViewById < View >( R . id . view _ space _ title _ subtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Container Ġ= ĠitemView . findViewById < View >( R . id . an des _ list _ item _ container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Selection View Ġ= ĠitemView . findViewById < View >( R . id . view _ item _ selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Avatar Ġ= ĠitemView . findViewById ( R . id . an des _ list _ item _ asset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des View Thumbnail Separator Ġ= ĠitemView . findViewById ( R . id . an des View Thumbnail Separator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Icon Ġ= ĠitemView . findViewById ( R . id . image _ view _ list _ item _ icon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠsetDefault Common View Values () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDefault Ġview Ġstates ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Title Subtitle View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Selection View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des View Thumbnail Separator . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Avatar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Icon . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDefault ĠTitle Ġand ĠSub title Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . setTextColor ( Context Compat . getColor ( item View . context , ĠR . color . an des _ gray _ 8 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView . setTextColor ( Context Compat . getColor ( item View . context , ĠR . color . an des _ gray _ 4 5 0 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTitle Ġand ĠSub title ĠType Face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . type face Ġ= ĠitemView . context . getFont OrDefault ( R . font . an des _ font _ regular ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView . type face Ġ= ĠitemView . context . getFont OrDefault ( R . font . an des _ font _ regular ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalculate Ġmargin Ġtop Ġof ĠAn des Ġche vron ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcalculate Che vron Top Margin ( an des ListItem Config : ĠAn des ListView Item Che vron , Ġan des ListItem Che vron : ĠView ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( an des ListItem Config . avatar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Che vron Top Margin Based In Avatar ( an des ListItem Che vron ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Che vron Top Margin Based In Title First Line ( an des ListItem Che vron ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġview Ġposition Ġvert ically Ġbased Ġon Ġ@ param Ġfunction To Calculate Top Margin ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġview Ġcurrent Ġview Ġto Ġposition Ġvert ically ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfunction To Calculate Top Margin Ġfunction Ġthat Ġreturns Ġthe Ġtop Ġmargin Ġthat Ġis Ġapplied ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġthe Ġview ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset View Item Position ( view : ĠView , Ġfunction To Calculate Top Margin : Ġ() Ġ-> ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . view Tree Observer . add On Pre Draw Listener ( object Ġ: ĠView Tree Observer . On Pre Draw Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Draw (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . view Tree Observer . remove On Pre Draw Listener ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġview . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Margin Ġ= Ġfunction To Calculate Top Margin () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . set Margins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġlayout Params ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBuild ĠAn des ĠList Ġitem Ġbased Ġon ĠAn des ListView Item Ġconfiguration ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Config Ġcurrent ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbind Item Common s ( item Config : ĠAn des ListView Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset An des List Title Configuration ( item Config ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Config . show Subtitle Ġ&& Ġ! item Config . subtitle . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset An des List Subtitle Configuration ( item Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config . item Selected ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Selection View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . setTextColor ( Context Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . an des _ blue _ ml _ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset An des List Icon Configuration ( item Config ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset An des List Avatar Configuration ( item Config ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Container . set Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config . padding Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config . padding Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config . padding Right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config . padding Bottom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet ĠAn des List Ġtitle Ġconfiguration Ġbased Ġon ĠAn des ListView Item Ġdata ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Config Ġcurrent ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset An des List Title Configuration ( item Config : ĠAn des ListView Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . text Ġ= Ġitem Config . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . max Lines Ġ= Ġitem Config . title Max Lines ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ PX , Ġitem Config . title FontSize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . type face Ġ= Ġitem Config . title Type Face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . setTextColor ( item Config . title Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet ĠAn des List Ġsubtitle Ġconfiguration Ġbased Ġon ĠAn des ListView Item Ġdata ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Config Ġcurrent ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset An des List Subtitle Configuration ( item Config : ĠAn des ListView Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Space Between Title And Subtitle ( item Config . space Title Subtitle ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView . text Ġ= Ġitem Config . subtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . type face Ġ= Ġitem Config . subtitle Type Face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView . setTextColor ( item Config . subtitle Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ PX , Ġitem Config . subtitle FontSize ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet ĠAn des List Ġicon Ġconfiguration Ġbased Ġon ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Config Ġcurrent ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset An des List Icon Configuration ( item Config : ĠAn des ListView Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config . icon ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Icon . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Icon . layout Params . width Ġ= Ġitem Config . icon Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Icon . layout Params . height Ġ= Ġitem Config . icon Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Icon . setImage Drawable ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Space Between Asset And Title ( item Config . separator Thumbnail Width ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset View Item Position ( an des ListItem Icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Icon Top Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet ĠAn des List ĠAvatar Ġconfiguration Ġbased Ġon ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Config Ġcurrent ĠAn des ListView Item Ġconfig ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset An des List Avatar Configuration ( item Config : ĠAn des ListView Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config . avatar ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Avatar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Avatar . size Ġ= Ġitem Config . thumbnail Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des ListItem Avatar . image Ġ= Ġit ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Space Between Asset And Title ( item Config . separator Thumbnail Width ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset View Item Position ( an des ListItem Avatar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Avatar Top Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġthe Ġtop Ġmargin Ġto Ġbe Ġapplied Ġto Ġthe Ġche vron Ġbased Ġon Ġavatar Ġposition . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġan des ListItem Che vron Ġthe Ġview Ġthat Ġcontains Ġthe Ġche vron Ġimage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Che vron Top Margin Based In Avatar ( an des ListItem Che vron : ĠView ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġche vron Half Height Ġ= Ġan des ListItem Che vron . height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġasset Half Height Ġ= Ġan des ListItem Avatar . height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġan des ListItem Avatar . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġasset Half Height Ġ+ Ġlayout Params . top Margin Ġ- Ġche vron Half Height ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġthe Ġtop Ġmargin Ġto Ġbe Ġapplied Ġto Ġthe Ġche vron Ġbased Ġon Ġthe Ġfirst Ġline Ġof Ġthe Ġtitle . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġan des ListItem Che vron Ġthe Ġview Ġthat Ġcontains Ġthe Ġche vron Ġimage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Che vron Top Margin Based In Title First Line ( an des ListItem Che vron : ĠView ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġtitle TextView . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġche vron Half Height Ġ= Ġan des ListItem Che vron . height Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Title Height InThe First Line () Ġ/ Ġ 2 Ġ+ Ġlayout Params . top Margin Ġ- Ġche vron Half Height ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalculate Ġmargin Ġtop Ġof ĠAn des Ġicon Ġbased Ġon Ġtitle Ġposition ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcalculate Icon Top Margin (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġtitle TextView . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġasset Half Height Ġ= Ġan des ListItem Icon . height Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Title Height InThe First Line () Ġ/ Ġ 2 Ġ+ Ġlayout Params . top Margin Ġ- Ġasset Half Height ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġthe Ġheight Ġof Ġthe Ġfirst Ġline Ġof Ġthe Ġtitle . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Title Height InThe First Line (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Title Height Ġ= Ġtitle TextView . meas ured Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnumberOf Lines Ġ= Ġtitle TextView . line Count ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( textView Title Height Ġ/ ĠnumberOf Lines ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalculate ĠAn des ĠAvatar Ġtop Ġmargin Ġto Ġdraw Ġit Ġcorrectly Ġbased Ġon Ġtitle Ġand Ġsubtitle Ġposition ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcalculate Avatar Top Margin (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtop Margin Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġtitle TextView . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġasset Half Height Ġ= Ġan des ListItem Avatar . height Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title TextView . line Count Ġ> Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Title Height Ġ= Ġtitle TextView . meas ured Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnumberOf Lines Ġ= Ġtitle TextView . line Count ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġ( 2 Ġ* ĠtextView Title Height Ġ/ ĠnumberOf Lines ) Ġ/ Ġ 2 Ġ+ Ġlayout Params . top Margin Ġ- Ġasset Half Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtop Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow Space Between Title And Subtitle ( space Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Title Subtitle View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Title Subtitle View . layout Params . height Ġ= Ġspace Height ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow Space Between Asset And Title ( space Width : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des View Thumbnail Separator . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan des View Thumbnail Separator . layout Params . height Ġ= Ġspace Width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ