package Ġcom . mike pen z . material drawer . model Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Compound Button Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . appcompat . widget . Switch Compat Ċ import Ġcom . mike pen z . material drawer . R Ċ import Ġcom . mike pen z . material drawer . interfaces . On Checked ChangeListener Ċ import Ġcom . mike pen z . material drawer . model . interfaces . Check able Ċ import Ġcom . mike pen z . material drawer . model . interfaces . ID raw er Item Ċ Ċ /** Ċ Ġ* ĠAn Ġabstract Ġ[ ID raw er Item ] Ġimplementation Ġdescribing Ġa Ġdrawer Item Ġwith Ġsupport Ġfor Ġa Ġswitch Ċ Ġ*/ Ċ abstract Ġclass ĠAbstract Switch able Drawer Item < Item Ġ: ĠAbstract Switch able Drawer Item < Item >> Ġ: ĠCheck able , ĠBase Describe able Drawer Item < Item , ĠAbstract Switch able Drawer Item . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġis Switch Enabled Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġvar Ġis Checked Ġ= Ġfalse ĊĠĠĠ Ġvar Ġon Checked ChangeListener : ĠOn Checked ChangeListener ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . id . material _ drawer _ item _ primary _ switch ĊĊĠĠĠ Ġoverride Ġval Ġlayout Res : ĠInt ĊĠĠĠĠĠĠĠ Ġ@ Layout Res ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . material _ drawer _ item _ switch ĊĊĠĠĠ Ġprivate Ġval Ġchecked ChangeListener Ġ= Ġobject Ġ: ĠCompound Button . On Checked ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon CheckedChanged ( button View : ĠCompound Button , Ġic : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Checked ChangeListener ?. on CheckedChanged ( this @ Abstract Switch able Drawer Item , Ġbutton View , Ġic ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton View . setOn Checked ChangeListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton View . isChecked Ġ= Ġ! ic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton View . setOn Checked ChangeListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Please Ġconsider Ġto Ġreplace Ġwith Ġthe Ġactual Ġproperty Ġsetter ") ĊĠĠĠ Ġfun Ġwith Switch Enabled ( switch Enabled : ĠBoolean ): ĠItem Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Switch Enabled Ġ= Ġswitch Enabled ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġas ĠItem ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Please Ġconsider Ġto Ġreplace Ġwith Ġthe Ġactual Ġproperty Ġsetter ") ĊĠĠĠ Ġfun Ġwith On Checked ChangeListener ( on Checked ChangeListener : ĠOn Checked ChangeListener ): ĠItem Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Checked ChangeListener Ġ= Ġon Checked ChangeListener ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġas ĠItem ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind View ( holder : ĠViewHolder , Ġpayload s : ĠList < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . bind View ( holder , Ġpayload s ) ĊĊĠĠĠĠĠĠĠ Ġ// bind Ġthe Ġbasic Ġview Ġparts ĊĠĠĠĠĠĠĠ Ġbind View Helper ( holder ) ĊĊĠĠĠĠĠĠĠ Ġ// handle Ġthe Ġswitch ĊĠĠĠĠĠĠĠ Ġholder . switch View . setOn Checked ChangeListener ( null ) ĊĠĠĠĠĠĠĠ Ġholder . switch View . isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠ Ġholder . switch View . setOn Checked ChangeListener ( checked ChangeListener ) ĊĠĠĠĠĠĠĠ Ġholder . switch View . isEnabled Ġ= Ġis Switch Enabled ĊĊĠĠĠĠĠĠĠ Ġ// add Ġa Ġon Drawer ItemClickListener Ġhere Ġto Ġbe Ġable Ġto Ġcheck Ġ/ Ġun check Ġif Ġthe Ġdrawer Item Ġcan 't Ġbe Ġselected ĊĠĠĠĠĠĠĠ Ġwith On Drawer ItemClickListener Ġ{ Ġv , Ġitem , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Selectable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġ! isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . switch View . isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// call Ġthe Ġon Post BindView Ġmethod Ġto Ġtrigger Ġpost Ġbind Ġview Ġactions Ġ( like Ġthe Ġlistener Ġto Ġmodify Ġthe Ġitem Ġif Ġrequired ) ĊĠĠĠĠĠĠĠ Ġon Post BindView ( this , Ġholder . item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewHolder ( v : ĠView ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġclass ĠViewHolder Ġinternal Ġconstructor ( view : ĠView ) Ġ: ĠBase ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġswitch View : ĠSwitch Compat Ġ= Ġview . findViewById < Switch Compat >( R . id . material _ drawer _ switch ) ĊĠĠĠ Ġ} Ċ } Ċ