package Ġz lc . season . y ak sa Ċ Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView . VERTICAL Ċ import Ġandroid . support . v 7 . widget . St agger ed Grid LayoutManager Ċ Ċ class ĠY ak sa Dsl ( data Set : ĠMutable List < Y ak sa Item >) Ġ{ ĊĠĠĠ Ġinternal Ġvar Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠ Ġinternal Ġvar Ġreverse Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġspan Count Ġ= Ġ 1 ĊĊĠĠĠ Ġinternal Ġval ĠdataSet : ĠMutable List < Y ak sa Item > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġinternal Ġvar ĠdataSet Changed Ġ= Ġfalse ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Set . addAll ( data Set ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġorientation , Ġdefault Ġis Ġ[ android . support . v 7 . widget . RecyclerView . VERTICAL ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation ĠĠ ĠLayout Ġorientation . ĠShould Ġbe Ġ[ android . support . v 7 . widget . RecyclerView . VERTICAL ] ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor Ġ[ android . support . v 7 . widget . RecyclerView . HORIZONTAL ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġorientation ( orientation : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . orientation Ġ= Ġorientation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġwhether Ġto Ġreverse Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġreverse ĠWhen Ġset Ġto Ġtrue , Ġlayouts Ġfrom Ġend Ġto Ġstart . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreverse ( reverse : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . reverse Ġ= Ġreverse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet ĠSpan Count Ġfor ĠGrid Ġand ĠSt agger ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġspan Count Ġspan Count ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġspan Count ( span Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . span Count Ġ= Ġspan Count ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġadd Ġan Ġitem Ġto ĠRe cycler view . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġindex ĠWhich Ġindex Ġto Ġadd ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblock ĠA Ġblock Ġreturn Ġa Ġdirect Ġitem Ġinstance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġitem ( index : ĠInt Ġ= Ġ- 1 , Ġblock : Ġ() Ġ-> ĠY ak sa Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ<= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet . add ( block ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet . add ( index , Ġblock ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠdataSet Changed Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġadd Ġan Ġitem Ġto ĠRe cycler view . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġindex ĠWhich Ġindex Ġto Ġadd ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblock ĠA Ġd sl Ġblock ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġitem Dsl ( index : ĠInt Ġ= Ġ- 1 , Ġblock : ĠY ak sa Item Dsl . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd sl Ġ= ĠY ak sa Item Dsl () ĊĠĠĠĠĠĠĠ Ġd sl . block () ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ<= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet . add ( dsl . internal ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet . add ( index , Ġd sl . internal ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠdataSet Changed Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġcheck St agger ( source : ĠSt agger ed Grid LayoutManager ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( source . orientation Ġ== Ġorientation Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . span Count Ġ== Ġspan Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġcheck Linear ( source : ĠLinearLayoutManager ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( source . orientation Ġ== Ġorientation Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . reverse Layout Ġ== Ġreverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġcheck Grid ( source : ĠGrid LayoutManager ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( source . orientation Ġ== Ġorientation Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . span Count Ġ== Ġspan Count Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . reverse Layout Ġ== Ġreverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }