package Ġnet . g ote v . recycler adapter demo . adapter items Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . widget . Switch Compat Ċ import Ġnet . g ote v . recycler adapter . Adapter Item Ċ import Ġnet . g ote v . recycler adapter . Recycler Adapter ViewHolder Ċ import Ġnet . g ote v . recycler adapter . dp Ċ Ċ open Ġclass ĠSwitch Item ( ĊĠĠĠ Ġval Ġlabel : ĠString , ĊĠĠĠ Ġval ĠonClick : Ġ(( item : ĠSwitch Item ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĠAdapter Item < Switch Item . Holder >( label ) Ġ{ ĊĊĠĠĠ Ġvar Ġselected Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( parent : ĠViewGroup ): ĠView Ġ= ĠSwitch Compat ( parent . context ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠViewGroup . Margin LayoutParams ( parent . layout Params ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 3 6 . dp ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin Ġ= Ġ 8 . dp ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Margin Ġ= Ġmargin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Margin Ġ= Ġmargin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġmargin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġmargin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Filter ( search Term : ĠString ) Ġ= Ġlabel . contains ( search Term ) ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( first Time : ĠBoolean , Ġholder : ĠH older ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . view . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġlabel ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠH older ( item View : ĠView ) Ġ: ĠRe cycler Adapter ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġview Ġ= ĠitemView Ġas ĠSwitch Compat ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . onClick With < Switch Item > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġ! selected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ?. invoke ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ