package Ġcom . github . android dev fr . form . rows Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . AppCompat RadioButton Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġcom . github . android dev fr . form . core . Dimension Utils Ċ import Ġcom . github . android dev fr . form . core . Dimension Utils . dp To Px Ċ Ċ class ĠSingle Choice Row ( context : ĠContext ) Ġ: ĠAbstract Title Row < String ? >( context ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TITLE _ M ARGIN _ BOTTOM Ġ= Ġ 1 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġvalue : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġitems : ĠList < String > Ġ= ĠlistOf < String >() ĊĠĠĠ Ġvar Ġdefault Checked : ĠList < String > Ġ= ĠlistOf < String >() ĊĊĠĠĠ Ġvar Ġcustomize Single Choice View : Ġ( Single Choice Row , ĠCompound Button ) Ġ-> ĠUnit Ġ= Ġ{ Ġchoice Row , Ġcompound Button Ġ-> ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġspacing Between Title And Items Ġ= Ġdp To Px ( DEFAULT _ TITLE _ M ARGIN _ BOTTOM ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChange Ġthis Ġlambda Ġto Ġhave Ġa Ġcustom ĠSingle Choice ĠView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcustomize Single Choice View ( block : Ġ( Single Choice Row , ĠCompound Button ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . customize Single Choice View Ġ= Ġblock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠonCreate View < Single Choice Row > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRadio Group ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . VERTICAL ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Title View ( TITLE _ VIEW _ ID ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle View Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRadio Group . LayoutParams ( ViewGroup . LayoutParams . WRAP _ CONTENT , ĠViewGroup . LayoutParams . WRAP _ CONTENT ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġspacing Between Title And Items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( create Single Choice View ( generate Row ItemId (), Ġitem , Ġdefault Checked . contains ( item ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Checked ChangeListener Ġ{ Ġbutton View , Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġbutton View . findViewById < Compound Button >( checked Id ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension Utils . dp To Px ( DEFAULT _ M ARGIN _ LEFT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension Utils . dp To Px ( DEFAULT _ M ARGIN _ TOP ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension Utils . dp To Px ( DEFAULT _ M ARGIN _ RIGHT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension Utils . dp To Px ( DEFAULT _ M ARGIN _ BOTTOM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Single Choice View ( view Id : ĠInt , Ġtext Value : ĠString , Ġchecked ByDefault : ĠBoolean ): ĠCompound Button Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠAppCompat RadioButton ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġview Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġchecked ByDefault ĊĠĠĠĠĠĠĠ Ġ} Ġas ĠCompound Button ĊĠĠĠĠĠĠĠ Ġcustomize Single Choice View . invoke ( this , Ġview ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalue (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} Ċ }