package Ġcom . m iz uk ikk . ml td . main . event . dialog Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . Window Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . m iz uk ikk . ml td . databinding . Dialog An iv Id ol List Binding Ċ import Ġcom . m iz uk ikk . ml td . main . event . adapter . An iv Id ol Adapter Ċ import Ġcom . m iz uk ikk . ml td . main . event . adapter . An iv Id ol Decoration Ċ import Ġcom . m iz uk ikk . ml td . room . query . Id ol Item Ċ import Ġjava . util .* Ċ Ċ class ĠAn iv Id ol List Dialog Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠAn iv Id ol List Dialog :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( an iv Id ol List : ĠList < Id ol Item >) Ġ= ĠAn iv Id ol List Dialog (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ArrayList ( TAG , Ġan iv Id ol List Ġas ĠArrayList < out ĠParcel able >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlistener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġan iv Id ol List : ĠList < Id ol Item > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠDialog An iv Id ol List Binding ĊĠĠĠ Ġprivate Ġval Ġan iv Id ol Adapter Ġby Ġlazy Ġ{ ĠAn iv Id ol Adapter () Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġsuper . onCreate Dialog ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . request Window Feature ( Window . FEATURE _ NO _ TITLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . window !!. setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan iv Id ol List Ġ= Ġit . get Parcelable ArrayList ( TAG ) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠDialog An iv Id ol List Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġset Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv An iv Id ol . layout Manager Ġ= ĠGrid LayoutManager ( require Context (), Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġbinding . rv An iv Id ol . adapter Ġ= Ġan iv Id ol Adapter ĊĠĠĠĠĠĠĠ Ġbinding . rv An iv Id ol . addItem Decoration ( An iv Id ol Decoration ( 4 )) ĊĠĠĠĠĠĠĠ Ġan iv Id ol Adapter . swap Data ( an iv Id ol List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġan iv Id ol Adapter . set Listener Ġ{ Ġid ol Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. invoke ( id ol Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset An iv Id ol List Dialog Listener ( listener : Ġ( Int ) Ġ-> ĠUnit ): ĠAn iv Id ol List Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġdialog ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . window ?. setLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġshow ( fm : ĠFragment Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfm . execute Pending Transactions () ĊĠĠĠĠĠĠĠ Ġif Ġ( this . is Added . not ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ( fm , ĠTAG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠ Ġ} Ċ Ċ }