/** Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ @ file : Suppress (" unused ") Ċ Ċ package Ġcom . af ol le st ad . material dialogs . list Ċ Ċ import Ġandroid . content . res . Color State List . valueOf Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . graphics . drawable . R ipple Drawable Ċ import Ġandroid . os . Build . VERSION . SDK _ INT Ċ import Ġandroid . os . Build . VERSION _ CODES . LO L LI POP Ċ import Ġandroidx . annotation . Array Res Ċ import Ġandroidx . annotation . Check Result Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġandroidx . annotation . Restrict To . Scope . LIBRARY _ GROUP Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . af ol le st ad . material dialogs . R Ċ import Ġcom . af ol le st ad . material dialogs . assert One Set Ċ import Ġcom . af ol le st ad . material dialogs . internal . list . Multi Choice Dialog Adapter Ċ import Ġcom . af ol le st ad . material dialogs . internal . list . Plain List Dialog Adapter Ċ import Ġcom . af ol le st ad . material dialogs . internal . list . Single Choice Dialog Adapter Ċ import Ġcom . af ol le st ad . material dialogs . utils . MD Util . if Not Zero Ċ import Ġcom . af ol le st ad . material dialogs . utils . MD Util . resolve Drawable Ċ import Ġcom . af ol le st ad . material dialogs . utils . getString Array Ċ import Ġcom . af ol le st ad . material dialogs . utils . resolve Color Ċ Ċ /** Ċ Ġ* ĠGets Ġthe ĠRecyclerView Ġfor Ġa Ġlist Ġdialog , Ġif Ġthere Ġis Ġone . Ċ Ġ* Ċ Ġ* Ġ@ throws ĠIllegalStateException Ġif Ġthe Ġdialog Ġis Ġnot Ġa Ġlist Ġdialog . Ċ Ġ*/ Ċ @ Check Result Ġfun ĠMaterial Dialog . get RecyclerView (): ĠRecyclerView Ġ{ ĊĠ Ġreturn Ġthis . view . content Layout . re cyclerView Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠ Ġ" This Ġdialog Ġis Ġnot Ġa Ġlist Ġdialog ." ĊĠ Ġ) Ċ } Ċ Ċ /** ĠA Ġshortcut Ġto Ġ[ RecyclerView . get Adapter ] Ġon Ġ[ get RecyclerView ]. Ġ*/ Ċ @ Check Result Ġfun ĠMaterial Dialog . getList Adapter (): ĠRecyclerView . Adapter < *> ? Ġ{ ĊĠ Ġreturn Ġthis . view . content Layout . re cyclerView ?. adapter Ċ } Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġcustom Ġlist Ġadapter Ġto Ġrender Ġcustom Ġlist Ġcontent . Ċ Ġ* Ċ Ġ* ĠCannot Ġbe Ġused Ġin Ġcombination Ġwith Ġmessage , Ġinput , Ġand Ġsome Ġother Ġtypes Ġof Ġdialog s . Ċ Ġ*/ Ċ @ Check Result Ġfun ĠMaterial Dialog . custom ListAdapter ( ĊĠ Ġadapter : ĠRecyclerView . Adapter < *> Ċ ): ĠMaterial Dialog Ġ{ ĊĠ Ġthis . view . content Layout . add RecyclerView ( ĊĠĠĠĠĠ Ġdialog Ġ= Ġthis , ĊĠĠĠĠĠ Ġadapter Ġ= Ġadapter ĊĠ Ġ) ĊĠ Ġreturn Ġthis Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ param Ġres ĠThe Ġstring Ġarray Ġresource Ġto Ġpopulate Ġthe Ġlist Ġwith . Ċ Ġ* Ġ@ param Ġitems ĠThe Ġliteral Ġstring Ġarray Ġto Ġpopulate Ġthe Ġlist Ġwith . Ċ Ġ* Ġ@ param ĠwaitFor Positive Button ĠWhen Ġtrue , Ġthe Ġ[ selection ] Ġlistener Ġwon 't Ġbe Ġcalled Ġuntil Ġan Ġitem Ċ Ġ* ĠĠĠ Ġis Ġselected Ġand Ġthe Ġpositive Ġaction Ġbutton Ġis Ġpressed . ĠDefaults Ġto Ġtrue Ġif Ġthe Ġdialog Ġhas Ġbuttons . Ċ Ġ* Ġ@ param Ġselection ĠA Ġlistener Ġinvoked Ġwhen Ġan Ġitem Ġin Ġthe Ġlist Ġis Ġselected . Ċ Ġ*/ Ċ @ Check Result Ġfun ĠMaterial Dialog . list Items ( ĊĠ Ġ@ Array Res Ġres : ĠInt ? Ġ= Ġnull , ĊĠ Ġitems : ĠList < String >? Ġ= Ġnull , ĊĠ Ġdisabled Indices : ĠInt Array ? Ġ= Ġnull , ĊĠ ĠwaitFor Positive Button : ĠBoolean Ġ= Ġtrue , ĊĠ Ġselection : ĠItem Listener Ġ= Ġnull Ċ ): ĠMaterial Dialog Ġ{ ĊĠ Ġassert One Set (" list Items ", Ġitems , Ġres ) ĊĠ Ġval Ġarray Ġ= Ġitems Ġ?: ĠgetString Array ( res )?. toList () Ġ?: Ġreturn Ġthis ĊĊĠ Ġif Ġ( getList Adapter () Ġ!= Ġnull ) Ġ{ ĊĠĠĠ Ġreturn Ġupdate List Items ( ĊĠĠĠĠĠĠĠ Ġres Ġ= Ġres , ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġitems , ĊĠĠĠĠĠĠĠ Ġdisabled Indices Ġ= Ġdisabled Indices ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġreturn Ġcustom ListAdapter ( ĊĠĠĠĠĠ ĠPlain List Dialog Adapter ( ĊĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġarray , ĊĠĠĠĠĠĠĠĠĠ Ġdisabled Items Ġ= Ġdisabled Indices , ĊĠĠĠĠĠĠĠĠĠ ĠwaitFor Positive Button Ġ= ĠwaitFor Positive Button , ĊĠĠĠĠĠĠĠĠĠ Ġselection Ġ= Ġselection ĊĠĠĠĠĠ Ġ) ĊĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠUpdates Ġthe Ġitems , Ġand Ġoptionally Ġthe Ġdisabled Ġindices , Ġof Ġa Ġplain , Ġsingle Ġchoice , Ċ Ġ* Ġor Ġmulti - choice Ġlist Ġdialog . Ċ Ġ* Ċ Ġ* Ġ@ author ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ċ Ġ*/ Ċ fun ĠMaterial Dialog . update List Items ( ĊĠ Ġ@ Array Res Ġres : ĠInt ? Ġ= Ġnull , ĊĠ Ġitems : ĠList < String >? Ġ= Ġnull , ĊĠ Ġdisabled Indices : ĠInt Array ? Ġ= Ġnull Ċ ): ĠMaterial Dialog Ġ{ ĊĠ Ġassert One Set (" update List Items ", Ġitems , Ġres ) ĊĠ Ġval Ġarray Ġ= Ġitems Ġ?: ĠgetString Array ( res )?. toList () Ġ?: Ġreturn Ġthis ĊĠ Ġval Ġadapter Ġ= ĠgetList Adapter () ĊĠ Ġcheck ( adapter Ġ!= Ġnull ) Ġ{ ĊĠĠĠ Ġ" update List Items (...) Ġcan 't Ġbe Ġused Ġbefore Ġyou 've Ġcreated Ġa Ġlist Ġdialog ." ĊĠ Ġ} ĊĠ Ġwhen Ġ( adapter ) Ġ{ ĊĠĠĠ Ġis ĠPlain List Dialog Adapter Ġ-> Ġ{ ĊĠĠĠĠĠ Ġadapter . replace Items ( array ) ĊĠĠĠĠĠ Ġif Ġ( disabled Indices Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . disable Items ( disabled Indices ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġis ĠSingle Choice Dialog Adapter Ġ-> Ġ{ ĊĠĠĠĠĠ Ġadapter . replace Items ( array ) ĊĠĠĠĠĠ Ġif Ġ( disabled Indices Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . disable Items ( disabled Indices ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġis ĠMulti Choice Dialog Adapter Ġ-> Ġ{ ĊĠĠĠĠĠ Ġadapter . replace Items ( array ) ĊĠĠĠĠĠ Ġif Ġ( disabled Indices Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . disable Items ( disabled Indices ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( ĊĠĠĠĠĠĠĠĠĠ Ġ" update List Items () Ġcannot Ġwork Ġwith Ġadapter Ġof Ġtype Ġ${ adapter :: class . java }" ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn Ġthis Ċ } Ċ Ċ /** Ġ@ author ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ġ*/ Ċ @ Restrict To ( LIBRARY _ GROUP ) Ċ fun ĠMaterial Dialog . getItem Selector (): ĠDrawable ? Ġ{ ĊĠ Ġval Ġdrawable Ġ= Ġresolve Drawable ( context Ġ= Ġcontext , Ġattr Ġ= ĠR . attr . md _ item _ selector ) ĊĠ Ġif Ġ( SDK _ INT Ġ>= ĠL OL LI POP Ġ&& Ġdrawable Ġis ĠR ipple Drawable ) Ġ{ ĊĠĠĠ Ġresolve Color ( attr Ġ= ĠR . attr . md _ ripple _ color ). if Not Zero Ġ{ ĊĠĠĠĠĠ Ġdrawable . setColor ( valueOf ( it )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn Ġdrawable Ċ } Ċ