package Ġorg . bob stuff . bob board view Ċ Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ Ċ /** Ċ Ġ* ĠAbstract Ġclass Ġfor Ġa ĠList Adapter Ġin Ġa Ġboard . Ġ ĠThis Ġis Ġmore Ġthan Ġjust Ġa Ġcontract Ġit Ġcontains Ġsome Ċ Ġ* Ġdefault Ġbehaviour Ġthat Ġis Ġrequired Ġfor Ġthe ĠBob Board View Ġinstance Ġto Ġwork . Ġ ĠIf Ġyou Ġchose Ġto Ġoverride Ċ Ġ* Ġany Ġof Ġthe Ġdefault Ġfunction Ġimplementation Ġmake Ġsure Ġto Ġcall Ġthe Ġsuper Ġimplementations Ġas well . Ċ Ġ* Ċ Ġ* Ġ-------------------------------- -- Ċ Ġ* Ġ| Ġcolumn ĠA Ġ| Ġcolumn ĠB Ġ| Ġcolumn ĠC Ġ| Ċ Ġ* Ġ| Ġ---------------- -------------- Ġ| Ċ Ġ* Ġ| Ġrow Ġ 1 a ĠĠĠ Ġ| Ġrow Ġ 1 b ĠĠĠ Ġ| Ġrow Ġ 1 c Ġ| Ċ Ġ* Ġ| Ġrow Ġ 2 a ĠĠĠ Ġ| Ġrow Ġ 2 b ĠĠĠ Ġ| Ġrow Ġ 2 c Ġ| Ċ Ġ* Ġ| Ġrow Ġ 3 a ĠĠĠ Ġ| Ġrow Ġ 3 b ĠĠĠ Ġ| Ġrow Ġ 3 c Ġ| Ċ Ġ* Ġ| Ġrow Ġ 4 a ĠĠĠ Ġ| Ġrow Ġ 4 b ĠĠĠ Ġ| Ġrow Ġ 4 c Ġ| Ċ Ġ* Ġ| -------------------------------- | Ċ Ġ* Ċ Ġ* Ġis Card Added During Drag Ġlogic : Ċ Ġ* Ġ---------------------------- Ċ Ġ* ĠIn Ġa ĠBoard View Ġa Ġlist Ġis Ġthe Ġre cycler view Ġthat Ġis Ġpart Ġof Ġa Ġcolumn Ġand Ġthe ĠList Adapter Ġis Ġthe Ċ Ġ* ĠRecyclerView Ġadapter Ġthat Ġmanages Ġthe Ġrows . Ġ ĠBecause Ġa Ġboard Ġview Ġis Ġin Ġess ence Ġa ĠRecyclerView Ġof Ċ Ġ* Ġre cycler Ġviews Ġand Ġyou Ġcan Ġdrag Ġentries Ġfrom Ġone Ġre cycler view Ġto Ġanother Ġwe Ġneed Ġsome Ġcustom Ġevent Ċ Ġ* Ġhandling Ġto Ġunderstand Ġwhen Ġthat Ġhappens . Ġ ĠHere Ġwe Ġare Ġusing Ġa Ġflag Ġis Card Added During Drag Ġand Ġthe Ċ Ġ* Ġre cycler Views Ġown Ġcallback Ġto Ġtell Ġus Ġwhen Ġa Ġnew ĠView Handler Ġhas Ġbeen Ġadded Ġto Ġget Ġaccess Ġto Ġthe Ċ Ġ* Ġview Ġhandler Ġreference Ġonce Ġit Ġis Ġon screen . Ġ ĠSo Ġthe Ġsteps Ġwill Ġbe : Ċ Ġ* Ġ Ġ- Ġsubclass Ġadds Ġmodel Ġto Ġadapters Ġdata Ġrepresentation Ċ Ġ* Ġ Ġ- Ġsubclass Ġcall ĠsetIs Card Added During Drag Ċ Ġ* Ġ Ġ- Ġsubclass Ġnot ifies Ġthe Ġadapter Ġthat Ġthe Ġdata Ġhas Ġchanged , Ġnotify Item Inserted Ġif Ġyou Ġwant Ġanimation Ċ Ġ* Ġ Ġ- Ġre cycler view Ġwill Ġwork Ġout Ġhow Ġthat Ġneeds Ġto Ġbe Ġdrawn Ġtriggering Ġthe Ġcreate Ġand Ġbind Ġas Ġnecessary Ċ Ġ* ĠĠĠ Ġinserting Ġthe Ġa Ġnew Ġview holder Ġand Ġadding Ġit Ġto Ġthe Ġwindow Ġbefore Ġcalling Ġon View Attached To Window Ċ Ġ* ĠĠĠ Ġto Ġlet Ġus Ġknow Ġthat Ġthe Ġview Ġwill Ġbe Ġshow Ċ Ġ* Ġ Ġ- Ġwe Ġuse Ġthis Ġcall Ġto Ġcheck Ġif Ġit Ġwas Ġa Ġdrag Ġadded Ġcall Ġand Ġif Ġit Ġwas Ġwe Ġtell Ġthe Ġclass Ġregistered Ċ Ġ* ĠĠĠ Ġfor Ġcard Event Callbacks Ġ( usually Ġthe ĠDefault Card Event Callbacks Ġthat Ġhas Ġa Ġreference Ġto Ġthe ĠBoard View Ċ Ġ* ĠĠĠ Ġthrough Ġthe Ġboard Ġadapter , Ġits Ġhard Ġto Ġsafely Ġmaintain Ġa Ġreference Ġto Ġthe Ġboard view Ġhere Ġin Ġthe Ċ Ġ* ĠĠĠ Ġlist Ġadapters Ġso ĠI Ġdon 't Ġtry ). Ċ Ġ* Ċ Ġ* ĠCreated Ġby Ġbob Ċ Ġ*/ Ċ abstract Ġclass ĠBob Board ListAdapter < T Ġ: ĠBob Board ListAdapter . Card ViewHolder > Ċ @ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprotected Ġvar Ġcard Event Callbacks : ĠCard Event Callbacks , ĊĠĠĠĠĠĠĠ Ġ@ field : Transient Ġprivate Ġval Ġdebug Logging Enabled : ĠBoolean Ġ= Ġtrue Ċ ) Ġ: ĠRecyclerView . Adapter < T >() Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġflag Ġto Ġindicate Ġthat Ġthe Ġnext Ġview Ġadded Ġto Ġthe Ġwindow Ġwas Ġtriggered Ġbecause Ġof Ġa Ġuser Ġdrag . ĊĠĠĠĠ Ġ* ĠCurrently ĠI 'm Ġassuming Ġthe Ġserial Ġexecution Ġof Ġevents Ġmeans Ġthere Ġshouldn 't Ġbe Ġanother Ġview ĊĠĠĠĠ Ġ* Ġadded Ġbetween Ġthis Ġflag Ġbeing Ġset Ġand Ġthe Ġinsertion Ġcomplet ing . Ġ ĠHope fully ĠI Ġam Ġright . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Added During Drag : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġis Card Added During Drag : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Added During Drag ĊĠĠĠĠĠĠĠ Ġset ( b ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( debug Logging Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" set Card Added During Drag () Ġ| Ġprevious : Ġ$ m Added During Drag ; Ġnew : Ġ$ b ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Added During Drag Ġ= Ġb ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġadded Card Id : ĠLong Ġ= Ġ- 1 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġmethod Ġif Ġyou Ġwant Ġto Ġhandle Ġcustom Ġchanges Ġto Ġthe Ġadded Ġview , Ġex . Ġmake Ġit ĊĠĠĠĠ Ġ* Ġinvisible . Ġ ĠJust Ġremember Ġto Ġcall Ġsuper ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( view Holder : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( debug Logging Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on View Attached To Window () Ġ| Ġm Added During Drag : Ġ" Ġ+ Ġm Added During Drag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"; Ġadapter Ġposition : Ġ" Ġ+ ĠviewHolder . adapter Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( m Added During Drag Ġ&& Ġadded Card Id Ġ== ĠviewHolder . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Added During Drag Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Event Callbacks . card Moved During Drag ( view Holder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInterface Ġfor Ġthe Ġcard Ġdrag Ġevents , Ġthis Ġis Ġused Ġto Ġpass Ġthe Ġevents Ġback Ġdown Ġto Ġthe Ġinterested ĊĠĠĠĠ Ġ* Ġlistener . Ġ ĠIf Ġusing ĠDefault Card Event Callbacks Ġthis Ġis Ġa Ġway Ġto Ġinform Ġthe Ġboard view Ġof Ġthe Ġevents . ĊĠĠĠĠ Ġ* ĠA Ġcustom Ġimplementation Ġcan Ġbe Ġcreated Ġif Ġyou Ġwant Ġto Ġtrigger Ġsome Ġnon Ġstandard Ġbehaviour . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠCard Event Callbacks Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcard Selected For Drag ( view Holder : ĠBob Board ListAdapter . Card ViewHolder , Ġx : ĠFloat , Ġy : ĠFloat ) ĊĠĠĠĠĠĠĠ Ġfun Ġcard Moved During Drag ( view Holder : ĠBob Board ListAdapter . Card ViewHolder , Ġcall Card Exit edList Callback : ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġfun Ġcard Moved During Drag ( view Holder : ĠBob Board ListAdapter . Card ViewHolder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠDefault Card Event Callbacks ( private Ġval Ġbob Board Adapter : ĠBob Board Adapter <* >, Ġprivate Ġval Ġlist ViewHolder : ĠBob Board Adapter . ListView Holder <* >) Ġ: ĠCard Event Callbacks Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcard Selected For Drag ( view Holder : ĠBob Board ListAdapter . Card ViewHolder , Ġx : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbob Board Adapter . board View !!. start Card Drag ( list ViewHolder , ĠviewHolder , Ġx , Ġy ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcard Moved During Drag ( view Holder : ĠBob Board ListAdapter . Card ViewHolder , Ġcall Card Exit edList Callback : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbob Board Adapter . board View !!. switch Card Drag ( list ViewHolder , ĠviewHolder , Ġcall Card Exit edList Callback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcard Moved During Drag ( view Holder : ĠBob Board ListAdapter . Card ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbob Board Adapter . board View !!. switch Card Drag ( list ViewHolder , ĠviewHolder , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġclass ĠCard ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Bob Board ListAdapter " ĊĠĠĠ Ġ} Ċ Ċ } Ċ