package Ġcom . z om ato . s ush ilib . molec ules . input fields Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Id Res Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġpre mp al Ġon Ġ 2 0 1 9 - 0 5 - 2 3 . Ċ Ġ*/ Ċ open Ġclass ĠS ush i Check able Strip Radio Group Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġctx : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( ctx , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġchecked Id Ġ= ĠView . NO _ ID ĊĠĠĠ Ġprivate Ġvar Ġprotect From Checked Change Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġchild On Checked ChangeListener : ĠS ush i Check able Strip . On Checked ChangeListener ĊĠĠĠ Ġprivate Ġvar Ġon Checked ChangeListener : ĠOn Checked ChangeListener ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠĠĠĠĠ Ġchild On Checked ChangeListener Ġ= Ġobject Ġ: ĠS ush i Check able Strip . On Checked ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon CheckedChanged ( view : ĠS ush i Check able Strip , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( protect From Checked Change ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotect From Checked Change Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked Id Ġ!= ĠView . NO _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Checked State For View ( checked Id , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotect From Checked Change Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Checked Id ( view . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ< p > Returns Ġthe Ġidentifier Ġof Ġthe Ġselected Ġ[ S ush i Check able Strip ] Ġin Ġthis Ġgroup . ĊĠĠĠĠ Ġ* ĠUp on Ġempty Ġselection , Ġthe Ġreturned Ġvalue Ġis Ġ- 1 .</ p > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġunique Ġid Ġof Ġthe Ġselected Ġ[ S ush i Check able Strip ] Ġin Ġthis Ġgroup ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Id Res ĊĠĠĠ Ġfun Ġget Checked Id () Ġ= Ġchecked Id ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġlistener Ġto Ġbe Ġcalled Ġwhen Ġthe Ġchecked Ġstrip Ġchanges Ġin Ġthis Ġgroup . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset On Checked ChangeListener ( listener : ĠOn Checked ChangeListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Checked ChangeListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġlambda Ġto Ġbe Ġcalled Ġwhen Ġthe Ġchecked Ġstrip Ġchanges Ġin Ġthis Ġgroup . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġlambda . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset On Checked ChangeListener ( listener : Ġ( group : ĠS ush i Check able Strip Radio Group , Ġid : ĠInt , Ġis Checked : ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset On Checked ChangeListener ( object Ġ: ĠOn Checked ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Checked Change ( group : ĠS ush i Check able Strip Radio Group , Ġid : ĠInt , Ġis Checked : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( group , Ġchecked Id , Ġis Checked ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd View ( child : ĠView ?, Ġindex : ĠInt , Ġparams : ĠViewGroup . LayoutParams ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( child Ġas ? ĠS ush i Check able Strip )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġchild . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠView . NO _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . id Ġ= ĠView . generate View Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Checked ChangeListener ( child On Checked ChangeListener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotect From Checked Change Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked Id Ġ!= ĠView . NO _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Checked State For View ( checked Id , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotect From Checked Change Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Checked Id ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . addView ( child , Ġindex , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Removed ( child : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( child Ġas ? ĠS ush i Check able Strip )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchecked Id Ġ= ĠView . NO _ ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Checked ChangeListener ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on View Removed ( child ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Checked Id (@ Id Res Ġid : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchecked Id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġon Checked ChangeListener ?. on Checked Change ( this , Ġid , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Checked State For View (@ Id Res Ġview Id : ĠInt , Ġchecked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchecked View Ġ= ĠfindViewById < S ush i Check able Strip >( view Id ) ĊĠĠĠĠĠĠĠ Ġchecked View ?. isChecked Ġ= Ġchecked ĊĠĠĠĠĠĠĠ Ġon Checked ChangeListener ?. on Checked Change ( this , Ġview Id , Ġchecked ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInterface Ġdefinition Ġfor Ġa Ġcallback Ġto Ġbe Ġinvoked Ġwhen Ġthe Ġchecked Ġstrip Ġchanges Ġin Ġthis Ġgroup . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠOn Checked ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġchecked Ġstrip Ġchanges Ġin Ġthis Ġgroup . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġgroup Ġthe Ġgroup Ġin Ġwhich Ġthe Ġchecked Ġstrip Ġhas Ġchanged ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġid Ġthe Ġunique Ġidentifier Ġof Ġthe Ġchecked Ġstrip ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġis Checked Ġthe Ġnew Ġchecked Ġstate ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Checked Change ( group : ĠS ush i Check able Strip Radio Group , Ġ@ Id Res Ġid : ĠInt , Ġis Checked : ĠBoolean ) ĊĠĠĠ Ġ} Ċ Ċ }