package Ġcom . github . m hd w aj ee h . dialog spinner Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . github . m hd w aj ee h . dialog spinner . R Ċ import Ġkotlinx . android . synt hetic . main . dialog _ spinner . view .* Ċ Ċ class ĠDialog Spinner Ġ: ĠLinearLayout , ĠItem Selection Listener Ġ{ ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġpublic Ġconst Ġval ĠSE LECTION _ MODE _ SINGLE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġpublic Ġconst Ġval ĠSE LECTION _ MODE _ MULTIPLE Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġselection Mode : ĠInt Ġ= ĠSE LECTION _ MODE _ SINGLE ĊĊĠĠĠ Ġvar ĠdataSet : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection List Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġitem Selection Listener : ĠItem Selection Listener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġselection List : ĠList < Int > Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate TextView () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View ( attrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View ( attrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ?, ĊĠĠĠĠĠĠĠ Ġdef Style Attr : ĠInt , ĊĠĠĠĠĠĠĠ Ġdef Style Res : ĠInt ĊĠĠĠ Ġ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) ĊĊĠĠĠ Ġprivate Ġfun Ġinit View ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠH ORIZONTAL ĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġis Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĊĠĠĠĠĠĠĠ ĠView . inflate ( context , ĠR . layout . dialog _ spinner , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġselection Ġmode Ġfrom Ġattributes Ġif Ġpresent ĊĠĠĠĠĠĠĠ Ġcontext . theme . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Dialog Spinner , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Mode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Integer ( R . style able . Dialog Spinner _ ds _ selection _ mode , ĠSE LECTION _ MODE _ SINGLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Dialog (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDialog Spinner Popup ( context , Ġselection Mode , ĠdataSet , Ġselection List , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Selection ( items : ĠList < Int >) Ġ{ ĊĠĠĠĠĠĠĠ Ġselection List Ġ= Ġitems ĊĠĠĠĠĠĠĠ Ġupdate TextView () ĊĠĠĠĠĠĠĠ Ġitem Selection Listener ?. on Item Selection ( items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate TextView () Ġ{ ĊĠĠĠĠĠĠĠ Ġspinner _ text . text Ġ= Ġwhen Ġ( selection List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" Select Ġan Ġoption " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠdataSet [ selection List [ 0 ]] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"${ selection List . size } Ġoptions Ġselected " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }