package Ġcom . tu uz ed . android x . recyclerview . adapter . prefs Ċ Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . af ol le st ad . material dialogs . list . list Items Multi Choice Ċ import Ġcom . tu uz ed . android x . recyclerview . adapter . Abstract Item View Binder Ċ import Ġcom . tu uz ed . android x . recyclerview . adapter . Common Item ViewHolder Ċ import Ġjava . util .* Ċ Ċ data Ġclass ĠPref Multi ListItem ( ĊĠĠĠĠĠĠĠ Ġvar Ġtitle : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġvar Ġsummary : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġvar Ġvalues Loader : ĠValues Loader Ġ= Ġ{ Ġit ( emptyList ()) Ġ}, ĊĠĠĠĠĠĠĠ Ġvar Ġdisplays Loader : ĠDisplays Loader Ġ= Ġ{ Ġit ( emptyList ()) Ġ}, ĊĠĠĠĠĠĠĠ Ġvar Ġitem Separator : ĠString Ġ= Ġ"\ r \ n ", ĊĠĠĠĠĠĠĠ Ġvar Ġallow Empty Selection : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġvar Ġchecked Values : ĠList < Any > Ġ= ĠCollections . emptyList (), ĊĠĠĠĠĠĠĠ Ġvar Ġchecked Display s : ĠList < String > Ġ= Ġsummary . split ( item Separator ), ĊĠĠĠĠĠĠĠ Ġvar Ġcallback : ĠPref Item Callback < Pref Multi ListItem > Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġtrue Ġ} Ċ ) Ċ Ċ class ĠPref Multi ListItem View Binder Ġ: ĠAbstract Item View Binder < Pref Multi ListItem >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Layout Id () Ġ= ĠR . layout . pref _ list item _ mult il ist ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠCommon Item ViewHolder , Ġitem : ĠPref Multi ListItem , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . text ( R . id . tv _ Title , Ġitem . title ) ĊĠĠĠĠĠĠĠ Ġholder . text ( R . id . tv _ Summary , Ġitem . summary ) ĊĠĠĠĠĠĠĠ Ġholder . click ( R . id . item Layout ) Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . values Loader Ġ{ Ġvalues Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . display s Loader Ġ{ Ġdisplays Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values . size Ġ!= Ġdisplays . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" values . size Ġ!= Ġdisplays . size ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Selection Ġ= ĠArrayList < Int >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . forEach Indexed Ġ{ Ġindex , Ġany Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . checked Values . contains ( any )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Selection . add ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Dialog ( v . context ). show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( text Ġ= Ġitem . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Auto Dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Items Multi Choice ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġdisplays , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Empty Selection Ġ= Ġitem . allow Empty Selection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Selection Ġ= Ġinitial Selection . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Ġ= Ġ{ Ġ_, Ġindices , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Checked Values Ġ= Ġitem . checked Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Checked Display s Ġ= Ġitem . checked Display s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Summary Ġ= Ġitem . summary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . checked Values Ġ= Ġvalues . filter Indexed Ġ{ Ġindex , Ġ_ Ġ-> Ġindices . contains ( index ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . checked Display s Ġ= Ġdisplays . filter Indexed Ġ{ Ġindex , Ġ_ Ġ-> Ġindices . contains ( index ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . summary Ġ= Ġitem . checked Display s . join ToString ( item . item Separator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . callback ( item , Ġposition )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . text ( R . id . tv _ Summary , Ġitem . summary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . checked Values Ġ= Ġold Checked Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . checked Display s Ġ= Ġold Checked Display s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . summary Ġ= Ġold Summary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button Ġ{ Ġdismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button Ġ{ Ġdismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ