package Ġcom . trend y ol . u ic omp onent s . dialogs . list Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . trend y ol . dialog . databinding . ItemList Binding Ċ Ċ internal Ġclass ĠDialog ListAdapter ( ĊĠĠĠ Ġprivate Ġval Ġshow Items As Html : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġselected Item Drawable : ĠInt ?, ĊĠĠĠ Ġprivate Ġval Ġselected TextColor : ĠInt ?, ĊĠĠĠ Ġprivate Ġval Ġshow RadioButton : ĠBoolean Ċ ) Ġ: ĠList Adapter < Pair < Boolean , ĠCharSequence >, ĠDialog ListAdapter . Item ViewHolder >( ListItem Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġvar Ġon ItemSelected Listener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Item Re selected Listener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Items ( list : ĠList < Pair < Boolean , ĠCharSequence >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubmit List ( list . to Mutable List ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠItem ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠItem ViewHolder Ġ= ĊĠĠĠĠĠĠĠ ĠItem ViewHolder ( ItemList Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse )) ĊĊĠĠĠ Ġinner Ġclass ĠItem ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠItem List Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! binding . imageView Left Image Drawable . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon ItemSelected Listener ?. invoke ( adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Re selected Listener ?. invoke ( adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠPair < Boolean , ĠCharSequence >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview State Ġ= ĠDialog ListItem ViewState ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġitem . second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow As Html Ġ= Ġshow Items As Html , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Item Drawable Ġ= Ġselected Item Drawable , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected TextColor Ġ= Ġselected TextColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġitem . first , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow RadioButton Ġ= Ġshow RadioButton ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( imageView Left Image Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġview State . get RadioButton Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġview State . get RadioButton Visibility () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( radioButton Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġview State . getText () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( view State . getSelected TextColor ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( imageView Checked Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( view State . getSelected Item Drawable ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġview State . getSelected Item Drawable Visibility () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ