package Ġorg . smart register . ch w . h iv . provider Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . joda . time . Period Ċ import Ġorg . smart register . ch w . h iv . R Ċ import Ġorg . smart register . ch w . h iv . contract . Base Index Clients Contact List Contract Ċ import Ġorg . smart register . ch w . h iv . domain . H iv Index Contact Object Ċ import Ġorg . smart register . util . Utils Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġco ze j 4 Ġon Ġ 2 0 2 1 - 0 7 - 1 3 . Ċ Ġ* Ċ Ġ* Ġ@ co ze j 4 Ġhttps :// github . com / co ze j 4 Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġthe Ġadapter Ġof Ġthe ĠIndex ĠContact s ĠList ĠRecyclerView Ġused Ġto Ġpopulate Ġa Ġlist Ġof Ġel ic ited Ċ Ġ* Ġindex Ġcontacts Ġof Ġan Ġh iv Ġclient Ċ Ġ*/ Ċ class ĠIndex Contacts ListAdapter ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġindex Contact Clients List : ĠList < H iv Index Contact Object ?> Ċ ) Ġ: ĠRecyclerView . Adapter < Index Contacts ListAdapter . My ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlayout Inflater : ĠLayoutInflater ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( view Group : ĠViewGroup , Ġi : ĠInt ): ĠMy ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Inflater Ġ= ĠLayoutInflater . from ( view Group . context ) ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġlayout Inflater !!. inflate ( R . layout . h iv _ index _ contact _ list _ row _ item , Ġview Group , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy ViewHolder ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy ViewHolder , Ġi : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġindex Contact Clients List [ i ] ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġage Ġ= ĠPeriod ( DateTime ( client ?. dob ), ĠDateTime ()). years ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfirstName Ġ= ĠUtils . getName ( client ?. firstName !! , Ġclient . middle Name !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpatient Name Ġ= ĠUtils . getName ( firstName , Ġclient . lastName !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . patient Name . text Ġ= Ġkotlin . String . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . util . Locale . getDefault (), Ġ"% s , Ġ% d ", Ġpatient Name , Ġage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( client . gender !!. toLowerCase () Ġ== Ġ" male ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . textView Gender . text Ġ= Ġcontext . getString ( R . string . sex _ male ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . textView Gender . text Ġ= Ġcontext . getString ( R . string . sex _ female ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv illage Ġ= Ġclient . address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġclient . test Results ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv illage ?. isNotEmpty () !! Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . textView V illage . text Ġ= Ġjava . text . Message Format . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( org . smart register . ch w . h iv . R . string . separator ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv illage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . relationship ?. isNotEmpty () !! Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( client . relationship . equals (" sex ual _ partner ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . relationship . text Ġ= Ġcontext . getString ( R . string . index _ contact _ sex ual _ partner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( client . relationship . equals (" needle _ sharing _ partner ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . relationship . text Ġ= Ġcontext . getString ( R . string . index _ contact _ needle _ sharing _ partner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( client . relationship . equals (" bio logical _ mother ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . relationship . text Ġ= Ġcontext . getString ( R . string . index _ contact _ bio logical _ mother ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( client . relationship . equals (" bio logical _ father ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . relationship . text Ġ= Ġcontext . getString ( R . string . index _ contact _ bio logical _ father ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( client . relationship . equals (" bio logical _ child _ under _ 1 5 ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . relationship . text Ġ= Ġcontext . getString ( R . string . index _ contact _ bio logical _ child _ under _ 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( client . relationship . equals (" siblings _ under _ 1 5 ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . relationship . text Ġ= Ġcontext . getString ( R . string . index _ contact _ siblings _ under _ 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . relationship . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result ?. isNotEmpty () !! Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( test Result . toLowerCase ( Locale . ROOT ) Ġ== Ġ" positive ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . h iv Status . text Ġ= Ġjava . text . Message Format . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . separator ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . h iv _ positive _ status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . h iv Status . setTextColor ( context . resources . getColor ( R . color . color Red )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . h iv Status . text Ġ= Ġjava . text . Message Format . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . separator ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . h iv _ negative _ status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . h iv Status . setTextColor ( context . resources . getColor ( R . color . accent )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . h iv Status ?. isNotEmpty () !! Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( client . h iv Status !!. toLowerCase ( Locale . ROOT ) Ġ== Ġ" positive ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . h iv Status . text Ġ= Ġjava . text . Message Format . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . separator ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . h iv _ positive _ status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . h iv Status . setTextColor ( context . resources . getColor ( R . color . color Red )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . view . setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context Ġas ĠBase Index Clients Contact List Contract . View ). presenter !!. open Index Contact Profile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Contact Clients List [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġindex Contact Clients List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġimplementation Ġof Ġthe Ġview Ġholder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠMy ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpatient Name : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar ĠtextView V illage : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar ĠtextView Gender : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġview : ĠView ĊĠĠĠĠĠĠĠ Ġvar Ġh iv Status : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġrelationship : ĠTextView ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpatient Name Ġ= Ġview . findViewById ( R . id . patient _ name _ age ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView V illage Ġ= Ġview . findViewById ( R . id . text _ view _ v illage ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Gender Ġ= Ġview . findViewById ( R . id . text _ view _ gender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh iv Status Ġ= Ġview . findViewById ( R . id . h iv _ status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelationship Ġ= Ġview . findViewById ( R . id . relationship ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }