import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . j azz hand z app .* Ċ import Ġcom . example . j azz hand z app . Activities . Routine Elements Activity Ċ import Ġcom . example . j azz hand z app . Database . Creator Rout ines Ċ import Ġcom . example . j azz hand z app . Database . Routine Name Ċ Ċ class ĠRout ine ListAdapter Ġinternal Ġconstructor ( Ċ context : ĠContext Ċ ) Ġ: ĠRecyclerView . Adapter < Routine ListAdapter . Routine ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( context ) ĊĊĠĠĠ Ġprivate Ġvar Ġcre ators Ġ= Ġempty List < Creator Rout ines >() ĊĠĠĠ Ġprivate Ġvar Ġroutines Ġ= Ġempty List < Routine Name >() ĊĠĠĠ Ġprivate Ġvar Ġtemp os Ġ= Ġempty List < Routine Name >() ĊĠĠĠ Ġprivate Ġvar Ġtracks Ġ= Ġempty List < Routine Name >() ĊĊĠĠĠ Ġinner Ġclass ĠRout ine ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcreator Item View : ĠTextView Ġ= ĠitemView . findViewById ( R . id . creator grid view ) ĊĠĠĠĠĠĠĠ Ġval Ġroutine Item View : ĠTextView Ġ= ĠitemView . findViewById ( R . id . rout in ename grid view ) ĊĠĠĠĠĠĠĠ Ġval Ġtrack Item View : ĠTextView Ġ= ĠitemView . findViewById ( R . id . track name grid view ) ĊĠĠĠĠĠĠĠ Ġval Ġtempo Item View : ĠTextView Ġ= ĠitemView . findViewById ( R . id . temp o grid view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRout ine ViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ Ġ= Ġinflater . inflate ( R . layout . rout ines recyclerview _ grid item , parent , false ) ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠRout ine ViewHolder ( item View ) ĠĠ Ġ// Ġview Ġbuild Ġstarts Ġwith Ġempty Ġlists Ġso Ġret uns Ġfor Ġholder Ġad ape ter positions Ġare Ġnull Ġhere ĊĊĠĠĠĠĠĠĠ ĠitemView . setOnClickListener () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroutine _ id Ġ= Ġholder . adapter Position Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( parent . context , ĠRout ine Elements Activity () :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" routine _ name ", Ġroutines [ holder . adapter Position ]. rout in ename ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" track _ name ", Ġroutines [ holder . adapter Position ]. track ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" track _ temp o ", Ġroutines [ holder . adapter Position ]. temp o . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" creator _ name ", Ġcre ators [ holder . adapter Position ]. creator ?. creator ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġd (" Pa ul ", Ġ" track Ġtempo Ġ${ rout ines [ holder . adapter Position ]. temp o }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" routine _ id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . adapter Position Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ Ġ// Ġnote Ġ- Ġindex Ġstarts Ġfrom Ġ 0 , Ġprimary Ġkey Ġstarts Ġat Ġ 1 Ġ Ġ// ĠDon 't Ġdo Ġit Ġthis Ġway ?? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . context . startActivity ( intent ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRout ine ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent creator Ġ= Ġcre ators [ position ] ĊĠĠĠĠĠĠĠ Ġval Ġcurrent routine Ġ= Ġroutines [ position ] ĊĊĠĠĠĠĠĠĠ Ġholder . creator Item View . text Ġ= Ġcurrent creator . creator ?. creator ĊĠĠĠĠĠĠĠ Ġholder . routine Item View . text Ġ= Ġcurrent routine . rout in ename ĊĠĠĠĠĠĠĠ Ġholder . track Item View . text Ġ= Ġcurrent routine . track Ċ // ĠĠĠĠĠĠĠ Ġholder . temp o Item View . text Ġ= Ġcurrent routine . temp o . toString () ĊĠĠĠĠĠĠĠ Ġholder . temp o Item View . text Ġ= Ġcurrent routine . temp o . toString () Ċ Ċ // ĠĠĠĠĠĠĠ Ġd (" Pa ul ", Ġ" temp o Ġ${ current routine . temp o . toString () }") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Creators ( cre ators : ĠList < Creator Rout ines > ){ Ċ // ĠĠĠ Ġinternal Ġfun Ġset Creators ( rout ines : ĠCreator Rout ines ){ ĊĠĠĠĠĠĠĠ Ġthis . cre ators Ġ= Ġcre ators Ċ // ĠĠĠĠĠĠĠ Ġd (" Pa ul ", Ġ"${ Creator Rout ines (). creator }") ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Rout ines ( rout in ename s : ĠList < Routine Name > ){ ĊĠĠĠĠĠĠĠ Ġthis . rout ines Ġ= Ġrout in ename s ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġinternal Ġfun Ġset Temp os ( temp os : ĠList < Routine Name > ){ Ċ // ĠĠĠĠĠĠĠ Ġthis . temp os Ġ= Ġtemp os Ċ // ĠĠĠĠĠĠĠ Ġnotify DataSet Changed () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġinternal Ġfun Ġset Tracks ( track : ĠList < Routine Name > ){ Ċ // ĠĠĠĠĠĠĠ Ġthis . tracks Ġ= Ġtrack Ċ // ĠĠĠĠĠĠĠ Ġnotify DataSet Changed () Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġcre ators . size ĊĊĊ Ċ } Ċ Ċ // abstract Ġclass ĠRout ine Id Listener Ġ( val Ġclick Listener : Ġ( routine _ id : ĠInt ) Ġ-> ĠInt ) Ġ{ Ċ // class ĠRout ine Id Listener Ġ( item Click : Ġ( Int ) Ġ-> ĠUnit ){ Ċ // class ĠRout ine Id Listener Ġ( item Click : Ġ( Int ) Ġ-> ĠUnit ){ Ċ //// ĠĠĠ Ġval Ġroutine _ id Ġ= Ġintent routine id . getInt Extra ( routine _ id ) Ċ // Ċ // ĠĠĠ Ġval Ġroutine _ id Ġ= Ġitem Click Ċ // Ċ //// ĠĠĠ Ġval Ġroutine _ id Ġ= Ġ 2 Ġ Ġ// Ġthis Ġworks Ċ // Ċ //// ĠĠĠ Ġval Ġroutine _ id Ġ= ĠLog . println ( Log . DEBUG ," Pa ul "," Test ") Ċ //// ĠĠĠ Ġval Ġroutine _ id Ġ= ĠLog . get StackTrace String ( t ) Ċ //} ĊĊ