package Ġcom . example . diagnostic sof then ode state ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . V ibration Effect Ċ import Ġandroid . os . V ibr ator Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . recycler _ view _ item . view .* ĊĊ Ċ class ĠMy Holder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ċ { ĊĠĠĠ Ġval Ġlst Point Ġ= ĠitemView . lst Point ĊĠĠĠ Ġval Ġlst Red Ġ= ĠitemView . lst Red ĊĠĠĠ Ġval Ġlst Yellow Ġ= ĠitemView . lst Yellow ĊĠĠĠ Ġval Ġlst Green Ġ= ĠitemView . lst Green ĊĠĠĠ Ġval Ġlst MI Ġ= ĠitemView . lst MI ĊĊĊĊĊĠĠĠ Ġfun Ġbind ( user : ĠUser , Ġclick Listener : ĠOn ItemClickListener , Ġon EditText Changed : ĠOn EditText Changed ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġlst Point . text Ġ= Ġuser . username ĊĠĠĠĠĠĠĠ Ġlst Red . text Ġ= Ġuser . red ĊĠĠĠĠĠĠĠ Ġlst Yellow . text Ġ= Ġuser . yellow ĊĠĠĠĠĠĠĠ Ġlst Green . text Ġ= Ġuser . green ĊĊ Ġ// ĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . LT GRAY ) ĊĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( when Ġ( user . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠColor . LT GRAY ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠColor . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠColor . YELLOW ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠColor . RED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠColor . LT GRAY ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġlst MI . text . clear () ĊĠĠĠĠĠĠĠ Ġlst MI . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ ĠitemView . lst Point . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener . on Item Clicked ( user ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user . green Ġ== Ġ" null ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lst MI . visibility Ġ== ĠView . GONE ) Ġlst MI . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst MI . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lst Red . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Red . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Yellow . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Green . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst MI . visibility Ġ- View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Red . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lst Yellow . text Ġ!= Ġ" null ") Ġlst Yellow . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lst Red . text Ġ!= Ġ" null ") Ġlst Red . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Green . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠitemView . lst Red . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener . on Item Clicked ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Red . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Yellow . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Green . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . RED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state R YG Ġ= Ġuser . red ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠitemView . lst Yellow . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener . on Item Clicked ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Red . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Yellow . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Green . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . YELLOW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state R YG Ġ= Ġuser . yellow ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠitemView . lst Green . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener . on Item Clicked ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Red . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Yellow . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Green . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . GREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state R YG Ġ= Ġuser . green ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠitemView . lst MI . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( char Sequence : ĠCharSequence , Ġi : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( char Sequence : ĠCharSequence , Ġi : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( editable : ĠEdit able ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" OT DO ", Ġ" after TextChanged : Ġ$ editable ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" OT DO ", Ġ" after TextChanged : Ġ${ user . yellow }") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" OT DO ", Ġ" after TextChanged : Ġ${ user . green }") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" OT DO ", Ġ" test : Ġ${ user . yellow . toFloat OrNull ()} Ġ Ġ${ user . green . toFloat OrNull () }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( editable . isEmpty () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . yellow . toFloat OrNull () Ġ== Ġnull Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . red . toFloat OrNull () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . LT GRAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state R YG Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( editable . toString (). toFloat () Ġ> Ġuser . red . toFloat ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . RED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state R YG Ġ= Ġeditable . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( editable . toString (). toFloat () Ġ> Ġuser . yellow . toFloat ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . YELLOW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state R YG Ġ= Ġeditable . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlst Point . set BackgroundColor ( Color . GREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . state R YG Ġ= Ġeditable . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ class ĠRe cycler Adapter ( ĊĠĠĠ Ġvar Ġusers : ĠMutable List < User >, ĊĠĠĠ Ġval Ġitem ClickListener : ĠOn ItemClickListener , ĊĠĠĠ Ġval Ġon EditText Changed : ĠOn EditText Changed Ċ Ċ ): RecyclerView . Adapter < My Holder >() Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġposition : ĠInt ): ĠMy Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . recycler _ view _ item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy Holder ( view ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġusers . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( my Holder : ĠMy Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġusers . get ( position ) ĊĠĠĠĠĠĠĠ Ġmy Holder . bind ( user , Ġitem ClickListener , Ġon EditText Changed ) ĊĊĊĠĠĠ Ġ} Ċ } ĊĊ Ċ interface ĠOn ItemClickListener { ĊĠĠĠ Ġfun Ġon Item Clicked ( user : ĠUser ) Ċ } Ċ Ċ interface ĠOn EditText Changed Ġ{ ĊĠĠĠ Ġfun Ġon TextChanged ( position : ĠInt , Ġchar Seq : ĠString ?) Ċ }