package Ġdev . sun ny day . core . mv vm . binding Ċ Ċ import Ġandroid . widget . Compound Button Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . databinding . Inverse Binding Adapter Ċ import Ġandroidx . databinding . Inverse Binding Listener Ċ Ċ object ĠCompound Button Bindings Ġ: ĠBind ings () Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ[" checked ", Ġ" checked Attr Changed "], ĊĠĠĠĠĠĠĠ Ġrequire All Ġ= Ġfalse ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġbind Checked ( ĊĠĠĠĠĠĠĠ Ġview : ĠCompound Button , ĊĠĠĠĠĠĠĠ Ġis Checked : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġinverse : ĠIn verse Binding Listener ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠCheck Changed Binding Ġ= Ġview . extras . get Or Set ( Check Changed Binding :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCheck Changed Binding ( inverse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġcurrent Value Ġ= Ġview . isChecked Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also ( view :: setOn Checked ChangeListener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( binding . current Value Ġ!= Ġis Checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . current Value Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Inverse Binding Adapter ( attribute Ġ= Ġ" checked ") ĊĠĠĠ Ġfun Ġbind Checked Inverse ( view : ĠCompound Button ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠCheck Changed Binding Ġ= Ġview . extras [ Check Changed Binding :: class ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġview . isChecked ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . current Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠCheck Changed Binding ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinverse : ĠIn verse Binding Listener ? ĊĠĠĠ Ġ) Ġ: ĠCompound Button . On Checked ChangeListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Value : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon CheckedChanged ( button View : ĠCompound Button , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked Ġ!= Ġcurrent Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Value Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinverse ?. onChange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }