package Ġcom . omega _ r . adapters Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View . INVALID _ POSITION Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ import Ġandroid . widget . Spinner Adapter Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġcom . omega _ r . libs . ome gat ypes . Text Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAnt on ĠK ny az ev Ġon Ġ 2 0 1 9 - 0 7 - 0 2 . Ċ Ġ*/ Ċ Ċ @ Suppress (" unused ", Ġ" Member Visibility Can Be Private ") Ċ abstract Ġclass ĠO mega Spinner Adapter < M >( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġ@ Layout Res Ġres : ĠInt Ġ= Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠ Ġlist : ĠList < M > Ġ= Ġempty List () Ċ ) Ġ: ĠArray Adapter < CharSequence >( context , Ġres , Ġempty List ()), ĠO mega List able Adapter < M >, ĊĠĠĠ ĠSp inner Adapter Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġlist : ĠList < M > Ġ= Ġlist ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġnon SelectedItem : ĠM ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġhas Stable Id : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġ( list . first OrNull () Ġis ĠO mega Ident ifiable <* >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġview Position : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġabstract Ġfun ĠgetItem Name ( item : ĠM , Ġis DropDown : ĠBoolean ): ĠCharSequence ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis DropDown Ġ= Ġif Ġ( position Ġ== Ġview Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Position Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnon SelectedItem Ġ== Ġnull Ġ-> ĠgetItem Name ( list [ position ], Ġis DropDown ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ== Ġ 0 Ġ-> ĠgetItem Name ( non SelectedItem !! , Ġis DropDown ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠgetItem Name ( list [ position Ġ- Ġ 1 ], Ġis DropDown ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġview Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . getView ( position , ĠconvertView , Ġparent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Position Ġ= Ġposition Ġ+ Ġ( if Ġ( non SelectedItem Ġ== Ġnull ) Ġ 0 Ġelse Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġitem Ġ= Ġlist . get OrNull ( new Position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠO mega Ident ifiable < *> Ġ-> Ġitem . id As Long ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . getItem Id ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Has Stable Id ( has Stable Id : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . has Stable Id Ġ= Ġhas Stable Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Stable Ids (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhas Stable Id !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġlist . size Ġ+ Ġ( if Ġ( non SelectedItem Ġ== Ġnull ) Ġ 0 Ġelse Ġ 1 ) ĊĊĠĠĠ Ġfun Ġset Selection ( spinner : ĠSp inner , Ġitem : ĠM ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Selection ( spinner , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġlist . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġif Ġ( non SelectedItem Ġ== Ġnull ) Ġi Ġelse Ġi Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Item Ġ= Ġlist [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Item Ġ== Ġitem Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( has Stable Id !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġitem Ġis ĠO mega Ident ifiable < *> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġlist Item Ġis ĠO mega Ident ifiable < *> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġitem . id Ġ== Ġlist Item . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Selection ( spinner , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Selection ( spinner : ĠSp inner , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( spinner . selected Item Position Ġ== Ġposition ) Ġreturn ĊĠĠĠĠĠĠĠ Ġspinner . setSelection ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selection ( spinner : ĠSp inner ): ĠM ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġget Selection Position ( spinner ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( position Ġ>= Ġ 0 ) Ġlist [ position ] Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selection Position ( spinner : ĠSp inner ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġspinner . selected Item Position ĊĠĠĠĠĠĠĠ Ġnon SelectedItem ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ<= Ġ 0 ) Ġreturn ĠINVALID _ POSITION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġposition Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġposition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠText Adapter ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġres : ĠInt Ġ= Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠĠĠĠĠ Ġlist : ĠList < Text > Ġ= Ġempty List () ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠO mega Spinner Adapter < Text >( context , Ġres , Ġlist ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Name ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem : ĠText , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis DropDown : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . get CharSequence ( context ) Ġ?: Ġ"" ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠString Adapter ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġres : ĠInt Ġ= Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠĠĠĠĠ Ġlist : ĠList < String > Ġ= Ġempty List () ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠO mega Spinner Adapter < String >( context , Ġres , Ġlist ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Name ( item : ĠString , Ġis DropDown : ĠBoolean ): ĠCharSequence Ġ= Ġitem ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCustom Adapter < M >( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġres : ĠInt Ġ= Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġconverter : Ġ( Context , Ġitem : ĠM , Ġis DropDown : ĠBoolean ) Ġ-> ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġlist : ĠList < M > Ġ= Ġempty List () ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠO mega Spinner Adapter < M >( context , Ġres , Ġlist ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Name ( item : ĠM , Ġis DropDown : ĠBoolean ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverter ( context , Ġitem , Ġis DropDown ) ĊĠĠĠ Ġ} ĊĊ Ċ }