package Ġru . mail . pol is . list . of . people Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġru . mail . pol is . R Ċ import Ġru . mail . pol is . helpers . get Age String Ċ import Ġru . mail . pol is . list . ListItem ClickListener Ċ import Ġru . mail . pol is . room . Room Count Ċ import Ġru . mail . pol is . tags . Tags Ċ Ċ class ĠPeople Adapter ( ĊĠĠĠ Ġprivate Ġvar Ġperson Views : ĠList < Person View >, ĊĠĠĠ Ġprivate Ġval Ġm OnClickListener : ĠList ItemClickListener Ċ ) Ġ: ĠRecyclerView . Adapter < People Adapter . People ViewHolder >() Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠPeople ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . people _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPeople ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠPeople ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( person Views [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( listOf Person Views : ĠList < Person View >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . person Views Ġ= ĠlistOf Person Views ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġperson Views . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠPeople ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcard View : ĠCard View Ġ= ĠitemView . findViewById ( R . id . people _ item __ card _ view ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlinear Layout Rooms : ĠLinearLayout Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById ( R . id . people _ item __ ll _ rooms ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġiv Photo : ĠImageView Ġ= ĠitemView . findViewById ( R . id . component _ person _ header __ avatar ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtv Name : ĠTextView Ġ= ĠitemView . findViewById ( R . id . component _ person _ header __ name ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtv Age : ĠTextView Ġ= ĠitemView . findViewById ( R . id . component _ person _ header __ age ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġll Iv Tags : ĠLinearLayout Ġ= ĠitemView . findViewById ( R . id . people _ item __ ll _ tags ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtv Metro : ĠTextView Ġ= ĠitemView . findViewById ( R . id . people _ item __ metro _ text ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġiv Branch Color : ĠImageView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById ( R . id . people _ item __ metro _ branch _ color ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtv Money : ĠTextView Ġ= ĠitemView . findViewById ( R . id . people _ item __ tv _ money ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtag Bottom Line Divider : ĠView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById ( R . id . people _ item __ tag _ line _ divider ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtv Description : ĠTextView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById ( R . id . people _ item __ tv _ description ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( person View : ĠPerson View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( person View . photo Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl To My ImageView ( iv Photo , Ġperson View . photo !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Name . text Ġ= Ġperson View . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Age . text Ġ= Ġperson View . age ?. let Ġ{ Ġget Age String ( it , ĠitemView . context ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags : ĠList < ImageView > Ġ= Ġperson View . tags . map Ġ{ Ġtag Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag To ImageView ( item View . context , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tags . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Bottom Line Divider . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags . forEach ( ll Iv Tags :: addView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( person View . metro Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Metro . text Ġ= Ġperson View . metro !!. station Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Branch Color . background . set Tint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson View . metro !!. branch Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( person View . money From Ġ== Ġ 0 L Ġ&& Ġperson View . money To Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Money . setText ( R . string . money _ default _ value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Money . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . money , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson View . money From , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson View . money To ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson View . rooms . forEach Ġ{ Ġroom Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard View Ġ= Ġcreate Room Card View ( item View . context , Ġroom , Ġlinear Layout Rooms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout Rooms . addView ( card View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclicked Position Ġ= Ġadapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm OnClickListener . on ListItem Click ( clicked Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Description . text Ġ= Ġperson View . description ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Room Card View ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġroom : ĠRoom Count , ĊĠĠĠĠĠĠĠ Ġroot : ĠViewGroup ĊĠĠĠ Ġ): ĠCard View Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . component _ card _ view _ room , Ġroot , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġcard View : ĠCard View Ġ= Ġview . findViewById ( R . id . component _ card _ view _ room __ card _ view ) ĊĠĠĠĠĠĠĠ Ġval ĠtextView : ĠTextView Ġ= Ġview . findViewById ( R . id . component _ card _ view _ room __ text _ view ) ĊĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġroom . label ĊĠĠĠĠĠĠĠ Ġreturn Ġcard View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtag To ImageView ( context : ĠContext , Ġtag : ĠTags ): ĠImageView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġiv Ġ= ĠImageView ( context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmargin LayoutParams Ġ= ĠViewGroup . Margin LayoutParams ( 4 5 , Ġ 4 5 ) ĊĠĠĠĠĠĠĠ Ġmargin LayoutParams . set Margins ( 0 , Ġ 0 , Ġ 2 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġiv . layout Params Ġ= Ġmargin LayoutParams ĊĠĠĠĠĠĠĠ Ġiv . adjust View Bounds Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġiv . setImage Resource ( tag . active Image ) ĊĠĠĠĠĠĠĠ Ġreturn Ġiv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġurl To My ImageView ( iv : ĠImageView , Ġurl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( iv ). load ( url ). into ( iv ) ĊĠĠĠ Ġ} Ċ } Ċ