/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠEn nis ĠW u . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġcom . enn is wu . ss shadow . demo . decoration Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . enn is wu . ss shadow . demo . R Ċ import Ġjava . util .* Ċ Ċ /** Ċ @ author ĠEn nis Ċ @ date Ġ 2 / 2 / 2 1 Ċ Ġ*/ Ċ class ĠShadow Decoration ViewModel : ĠViewModel () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ OR IENTATION Ġ= ĠRecyclerView . VERTICAL ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ RE VERSE Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ reverse Ġ= ĠMutable LiveData ( DEFAULT _ RE VERSE ) ĊĠĠĠ Ġval Ġreverse : ĠLive Data < Boolean > Ġ= Ġ_ reverse ĊĊĠĠĠ Ġprivate Ġval Ġ_ orientation Ġ= ĠMutable LiveData ( DEFAULT _ OR IENTATION ) ĊĠĠĠ Ġval Ġorientation : ĠLive Data < Int > Ġ= Ġ_ orientation ĊĊĠĠĠ Ġprivate Ġval Ġ_ list : ĠMutable List < Entity > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġval Ġlist : ĠList < Entity > Ġ= Ġ_ list ĊĊĠĠĠ Ġprivate Ġval Ġ_ bound Data Ġ= ĠBound () ĊĊĠĠĠ Ġprivate Ġval Ġ_ bound Ġ= ĠMutable LiveData (_ bound Data ) ĊĠĠĠ Ġval Ġbound : ĠLive Data < Bound > Ġ= Ġ_ bound ĊĊĠĠĠ Ġprivate Ġval Ġ_ layout Manager Ġ= ĠMutable LiveData ( 0 ) ĊĠĠĠ Ġval Ġlayout Manager : ĠLive Data < Int > Ġ= Ġ_ layout Manager ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 6 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ list . add ( Entity ( i . toString (), Ġwhen Ġ( i Ġ% Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠR . color . red _ 3 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠR . color . green _ 3 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . color . blue _ 3 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġwhen ( i Ġ% Ġ 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġwhen ( i Ġ% Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange LayoutManager (@ LayoutManager Ġlayout Manager : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ bound Data . main Axis Padding End Ġ= Ġif Ġ( layout Manager Ġ!= ĠLayout Manager . ST AG GER ED _ GRID ) Ġ 0 Ġelse Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ_ bound . value Ġ= Ġ_ bound . value ĊĠĠĠĠĠĠĠ Ġ_ layout Manager . value Ġ= Ġlayout Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Reverse ( reverse : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ reverse . value Ġ= Ġreverse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Orientation (@ RecyclerView . Orientation Ġorientation : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ orientation . value Ġ= Ġorientation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Bound ( left : ĠInt Ġ= Ġ_ bound Data . left , Ġtop : ĠInt Ġ= Ġ_ bound Data . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright : ĠInt Ġ= Ġ_ bound Data . right , Ġbottom : ĠInt Ġ= Ġ_ bound Data . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinner : ĠInt Ġ= Ġ_ bound Data . inner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinner Horizontal : ĠInt Ġ= Ġ_ bound Data . inner Horizontal , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinner Vertical : ĠInt Ġ= Ġ_ bound Data . inner Vertical , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Axis Padding End : ĠInt Ġ= Ġ_ bound Data . main Axis Padding End ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ bound Data . left Ġ= Ġleft ĊĠĠĠĠĠĠĠ Ġ_ bound Data . top Ġ= Ġtop ĊĠĠĠĠĠĠĠ Ġ_ bound Data . right Ġ= Ġright ĊĠĠĠĠĠĠĠ Ġ_ bound Data . bottom Ġ= Ġbottom ĊĠĠĠĠĠĠĠ Ġ_ bound Data . inner Ġ= Ġinner ĊĠĠĠĠĠĠĠ Ġ_ bound Data . inner Horizontal Ġ= Ġinner Horizontal ĊĠĠĠĠĠĠĠ Ġ_ bound Data . inner Vertical Ġ= Ġinner Vertical ĊĠĠĠĠĠĠĠ Ġ_ bound Data . main Axis Padding End Ġ= Ġmain Axis Padding End ĊĠĠĠĠĠĠĠ Ġ_ bound . value Ġ= Ġ_ bound . value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġswap Data ( from : ĠInt , Ġto : ĠInt ) Ġ= ĠCollections . swap (_ list , Ġfrom , Ġto ) ĊĊĠĠĠ Ġfun Ġremove Data ( index : ĠInt ) Ġ= Ġ_ list . remove At ( index ) Ċ }