package Ġworld . ach ie ver . pl any our day . saved tasks Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġworld . ach ie ver . pl any our day . data . source . local . Saved Task Ċ import Ġworld . ach ie ver . pl any our day . databinding . Item Re cy cer View Saved Tasks Binding Ċ import Ġworld . ach ie ver . pl any our day . plan . getSimple Item Touch Callback ĊĊ Ċ class ĠSaved Tasks Adapter ( ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSaved Tasks ViewModel , ĊĠĠĠ Ġre cyclerView : ĠRecyclerView Ċ ) Ġ: ĠList Adapter < Saved Task , ĠSaved Tasks Adapter . ViewHolder >( Task Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠItem Touch Helper ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Simple Item Touch Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon RecyclerView Item Move Ġ= Ġ{ ĠstartPosition , Ġend Position Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on RecyclerView Item Move ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartPosition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon RecyclerView Item Sw ip ed Ġ= Ġ{ Ġitem Position , Ġdirection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on RecyclerView Item Sw ip ed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ). attach To RecyclerView ( re cyclerView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . bind ( viewModel , Ġitem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder . from ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder Ġprivate Ġconstructor ( private Ġval Ġbinding : ĠItem Re cy cer View Saved Tasks Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( viewModel : ĠSaved Tasks ViewModel , Ġitem : ĠSaved Task ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . saved Task Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom ( parent : ĠViewGroup ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Re cy cer View Saved Tasks Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Diff Callback Ġ: ĠDiff Util . Item Callback < Saved Task >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠSaved Task , Ġnew Item : ĠSaved Task ) Ġ= Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠSaved Task , Ġnew Item : ĠSaved Task ) Ġ= Ġold Item Ġ== Ġnew Item Ċ }