package Ġcom . example . kon st ant in . we art est . ui . hint details Ċ Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . example . kon st ant in . we art est . R Ċ import Ġcom . example . kon st ant in . we art est . ext ans ions . inflate Ċ import Ġcom . h ann es dor fm ann . adapter deleg ates 3 . Adapter Delegate Ċ import Ġcom . h ann es dor fm ann . adapter deleg ates 3 . List Deleg ation Adapter Ċ import Ġkotlinx . android . synt hetic . main . item _ hint _ image . view .* Ċ import Ġkotlinx . android . synt hetic . main . item _ hint _ text . view .* Ċ import Ġkotlinx . android . synt hetic . main . item _ hint _ title . view .* Ċ import Ġru . semp er _ viv ent em . common . dto . Base Hint Item ĊĊ Ċ class ĠHint Items Adapter ( ĊĠĠĠ Ġprivate Ġval Ġimage Selected : Ġ( image : ĠBase Hint Item . Image Hint Item ) Ġ-> ĠUnit Ċ ) Ġ: ĠList Deleg ation Adapter < List < Base Hint Item >>() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Edit Mode : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġwith ( deleg ates Manager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Delegate ( Hint Title Delegate ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Delegate ( Hint Text Delegate ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Delegate ( Hint Image Delegate ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġif Ġ( is Edit Mode ) Ġitems . size Ġ+ Ġ 1 Ġelse Ġitems . size ĊĊĠĠĠ Ġprivate Ġval Ġedit Block Position : ĠInt Ġget () Ġ= Ġitems . last Index Ġ+ Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun Ġset Items ( items : ĠList < Base Hint Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Items ( items ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Edit Mode ( is Edit Mode : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Edit Mode Ġ= Ġis Edit Mode ĊĠĠĠĠĠĠĠ Ġif Ġ( is Edit Mode ) Ġnotify Item Inserted ( edit Block Position ) Ġelse Ġnotify Item Removed ( edit Block Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĶ ÐµÐ» ÐµÐ³ Ð°ÑĤ ĠÐ´Ð»Ñı ĠÐº Ð°ÑĢ ÑĤ Ð¸Ð½ Ð¾Ðº ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠHint Image Delegate Ġ: ĠAdapter Delegate < List < Base Hint Item >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis For ViewType ( items : ĠList < Base Hint Item >, Ġposition : ĠInt ): ĠBoolean Ġ= Ġposition Ġ< Ġitems . size Ġ&& Ġitems [ position ] Ġis ĠBase Hint Item . Image Hint Item ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ): ĠRecyclerView . ViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewHolder ( parent . inflate ( R . layout . item _ hint _ image )) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( items : ĠList < Base Hint Item >, Ġposition : ĠInt , Ġholder : ĠRecyclerView . ViewHolder , Ġpayload s : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder Ġas ĠViewHolder ). bind ( items [ position ] Ġas ĠBase Hint Item . Image Hint Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinner Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġimage : ĠBase Hint Item . Image Hint Item ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġimage Selected . invoke ( image ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠBase Hint Item . Image Hint Item ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġitem ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( item . uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( item View . image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĶ ÐµÐ» ÐµÐ³ Ð°ÑĤ ĠÐ´Ð»Ñı ĠÑĤÐµÐº ÑģÑĤ Ð° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠHint Text Delegate Ġ: ĠAdapter Delegate < List < Base Hint Item >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis For ViewType ( items : ĠList < Base Hint Item >, Ġposition : ĠInt ): ĠBoolean Ġ= Ġposition Ġ< Ġitems . size Ġ&& Ġitems [ position ] Ġis ĠBase Hint Item . Text Hint Item ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ): ĠRecyclerView . ViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewHolder ( parent . inflate ( R . layout . item _ hint _ text )) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( items : ĠList < Base Hint Item >, Ġposition : ĠInt , Ġholder : ĠRecyclerView . ViewHolder , Ġpayload s : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder Ġas ĠViewHolder ). bind ( items [ position ] Ġas ĠBase Hint Item . Text Hint Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinner Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠBase Hint Item . Text Hint Item ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . text . text Ġ= Ġitem . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĶ ÐµÐ» ÐµÐ³ Ð°ÑĤ ĠÐ´Ð»Ñı ĠÐ· Ð°Ð³ Ð¾Ð» Ð¾Ð² ÐºÐ¾Ð² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠHint Title Delegate Ġ: ĠAdapter Delegate < List < Base Hint Item >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis For ViewType ( items : ĠList < Base Hint Item >, Ġposition : ĠInt ): ĠBoolean Ġ= Ġposition Ġ< Ġitems . size Ġ&& Ġitems [ position ] Ġis ĠBase Hint Item . Title Hint Item ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ): ĠRecyclerView . ViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewHolder ( parent . inflate ( R . layout . item _ hint _ title )) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( items : ĠList < Base Hint Item >, Ġposition : ĠInt , Ġholder : ĠRecyclerView . ViewHolder , Ġpayload s : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder Ġas ĠViewHolder ). bind ( items [ position ] Ġas ĠBase Hint Item . Title Hint Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinner Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠBase Hint Item . Title Hint Item ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . title . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }