package Ġcom . j ose ph us zh ou . w ud ao zi . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . List Popup Window Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġcom . j ose ph us zh ou . w ud ao zi . R Ċ import Ġcom . j ose ph us zh ou . w ud ao zi . adapter . Album Adapter Ċ import Ġcom . j ose ph us zh ou . w ud ao zi . entity . Album Entity Ċ import Ġcom . j ose ph us zh ou . w ud ao zi . util . Attr Util Ċ Ċ class ĠAlbum Spinner ( context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ SHOW _ COUNT Ġ= Ġ 6 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm List Popup Window : ĠList Popup Window Ġ= ĠList Popup Window ( context , Ġnull ) ĊĊĠĠĠ Ġprivate Ġvar Ġm Album Adapter : ĠAlbum Adapter ĊĠĠĠ Ġprivate Ġvar Ġm On ItemSelected Listener : ĠOn ItemSelected Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Selected TextView : ĠAppCompat TextView ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm List Popup Window . is Modal Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm List Popup Window . setContent Width ( context . resources . get Dimension Pixel Size ( R . dim en . w ud ao zi _ spinner _ width )) ĊĊĠĠĠĠĠĠĠ Ġm Album Adapter Ġ= ĠAlbum Adapter ( context , ĠArrayList ()) ĊĠĠĠĠĠĠĠ Ġm List Popup Window . setAdapter ( m Album Adapter ) ĊĊĠĠĠĠĠĠĠ Ġm List Popup Window . setOn ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon selected ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm On ItemSelected Listener ?. on ItemSelected ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm List Popup Window . dismiss () ĊĠĠĠĠĠĠĠ Ġval Ġalbum Entity Ġ= Ġm Album Adapter . getItem ( position ) Ġas ĠAlbum Entity ĊĠĠĠĠĠĠĠ Ġm Selected TextView ?. text Ġ= Ġalbum Entity . album Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetSelected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm List Popup Window . setSelection ( position ) ĊĠĠĠĠĠĠĠ Ġon selected ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( list : ĠArrayList < Album Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Album Adapter . setData ( list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On ItemSelected Listener ( listener : ĠOn ItemSelected Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm On ItemSelected Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Anchor View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm List Popup Window . anchor View Ġ= Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġfun ĠsetSelected TextView ( textView : ĠAppCompat TextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Selected TextView Ġ= ĠtextView ĊĊĠĠĠĠĠĠĠ Ġm Selected TextView ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġt int Ġdropdown Ġarrow Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġit . compound Draw ables Relative [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠAttr Util . get color ( it . context , ĠR . attr . toolbar _ album _ text _ color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . w ud ao zi _ toolbar _ control _ normal _ color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright . setColor Filter ( color , ĠPort er D uff . Mode . SRC _ IN ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Album Adapter . let Ġ{ Ġit 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . resources . get Dimension Pixel Size ( R . dim en . w ud ao zi _ spinner _ item _ height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm List Popup Window . height Ġ= Ġif Ġ( it 1 . count Ġ> ĠMAX _ SHOW _ COUNT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Height Ġ* ĠMAX _ SHOW _ COUNT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Height Ġ* Ġit 1 . count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm List Popup Window . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Touch Listener ( m List Popup Window . create Drag To Open Listener ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon ItemSelected ( position : ĠInt ) ĊĠĠĠ Ġ} Ċ Ċ }