package Ġde . it d ude . gy md ude . ui . adapter Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ import Ġandroidx . core . view . do On Detach Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġde . it d ude . gy md ude . util . get Lifecycle Owner Ċ Ċ class ĠSp inner Adapter < T >( private Ġval Ġspinner : ĠSp inner , Ġitems : ĠList < T >, Ġselected Layout : ĠInt ?, Ġprivate Ġval Ġhide Selected : ĠBoolean Ġ= Ġfalse ) Ġ: Ċ ĉ Array Adapter < T >( spinner . context , Ġselected Layout Ġ?: Ġandroid . R . layout . simple _ spinner _ dropdown _ item , Ġitems ) Ġ{ ĊĊ ĉ private Ġval Ġhide Params Ġ= ĠViewGroup . LayoutParams (- 1 , Ġ 1 ) Ċ ĉ private Ġval Ġshow Params Ġ= ĠViewGroup . LayoutParams (- 1 , Ġ- 2 ) Ċ ĉ private Ġval Ġobserver Ġ= ĠObserver < Any ?> Ġ{ Ġnotify DataSet Changed () Ġ} ĊĊ ĉ init Ġ{ Ċĉ ĉ if Ġ( items Ġis ĠLive Data <* >) Ġ{ Ċĉĉ ĉ items . observe ( spinner . context . get Lifecycle Owner (), Ġobserver ) Ċĉĉ ĉ spinner . do On Detach Ġ{ Ġitems . remove Observer ( observer ) Ġ} Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ override Ġfun Ġget DropDown View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ= Ċĉ ĉ super . get DropDown View ( position , ĠconvertView , Ġparent ). apply Ġ{ Ċĉĉ ĉ if Ġ( hide Selected ) Ġ{ Ċĉĉĉ ĉ if Ġ( position Ġ== Ġspinner . selected Item Position ) Ġ{ Ċĉĉĉĉ ĉ convert View ?. layout Params Ġ= Ġhide Params Ċĉĉĉĉ ĉ convert View ?. visibility Ġ= ĠView . GONE Ċĉĉĉĉ ĉ layout Params Ġ= Ġhide Params Ċĉĉĉĉ ĉ visibility Ġ= ĠView . GONE Ċĉĉĉ ĉ } Ġelse Ġif Ġ( convert View Ġ!= Ġnull Ġ&& ĠconvertView . visibility Ġ== ĠView . GONE ) Ġ{ Ċĉĉĉĉ ĉ convert View . visibility Ġ= ĠView . VISIBLE Ċĉĉĉĉ ĉ convert View . layout Params Ġ= Ġshow Params Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } Ċ Ċ }