package Ġdev . band b . design studio . design 1 Ċ Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġdev . band b . design studio . design 1 . common . Task Group Ċ import Ġdev . band b . design studio . design 1 . databinding . Tasks Item Binding Ċ import Ġdev . band b . design studio . design 1 . utils . transition . Task Transition Data Ċ Ċ internal Ġclass ĠTasks Adapter ( ĊĠĠĠ Ġprivate Ġval Ġtask Groups : ĠList < Task Group >, ĊĠĠĠ Ġprivate Ġval Ġon Task Group Selected : Ġ( Task Transition Data ) Ġ-> ĠUnit Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Task Group ViewHolder >() Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠTask Group ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠTask Group ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTasks Item Binding . inflate ( in flater , Ġparent , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Task Group Selected ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠTask Group ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( task Groups [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġtask Groups . size Ċ } Ċ Ċ class ĠTask Group ViewHolder ( ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠTasks Item Binding , ĊĠĠĠ Ġprivate Ġval Ġon Task Group Selected : Ġ( Task Transition Data ) Ġ-> ĠUnit Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġbinding . root . context ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Task Group Selected ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Transition Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Adapter Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . task Icon Container Ġto Ġcontext . getString ( R . string . task _ icon _ transition _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tasks GroupName Ġto Ġcontext . getString ( R . string . tasks _ group _ name _ transition _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tasks Progress bar Ġto Ġcontext . getString ( R . string . tasks _ progress _ bar _ transition _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tasks Count Ġto Ġcontext . getString ( R . string . tasks _ count _ transition _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tasks Progress Ġto Ġcontext . getString ( R . string . task _ progress _ transition _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root Ġto Ġcontext . getString ( R . string . task _ create _ layout _ transition _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind ( task Group : ĠTask Group ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Size Ġ= Ġtask Group . tasks . size ĊĠĠĠĠĠĠĠ Ġval Ġfinished Tasks Ġ= Ġtask Group . tasks . count Ġ{ Ġit . finished Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Transition Names () ĊĊĠĠĠĠĠĠĠ Ġbinding . tasks GroupName . text Ġ= Ġtask Group . name ĊĠĠĠĠĠĠĠ Ġbinding . tasks Count . text Ġ= Ġcontext . getString ( R . string . task _ count , Ġtask Size ) ĊĠĠĠĠĠĠĠ Ġbinding . tasks Progress bar . max Ġ= Ġtask Size ĊĠĠĠĠĠĠĠ Ġbinding . tasks Progress bar . progress Ġ= Ġfinished Tasks ĊĠĠĠĠĠĠĠ Ġbinding . tasks Progress bar . progress Tint List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor State List . valueOf ( Context Compat . getColor ( context , Ġtask Group . color )) ĊĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= ĠContext Compat . get Drawable ( context , Ġtask Group . icon )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Tint ( context . getColor ( task Group . color )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . task Icon . setImage Drawable ( icon ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( task Size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tasks Progress . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . task _ percentage , Ġ( 1 0 0 Ġ/ Ġtask Size Ġ* Ġfinished Tasks )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Transition Names () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . root . transition Name Ġ= Ġ" test _$ binding Adapter Position " ĊĠĠĠĠĠĠĠ Ġbinding . task Icon Container . transition Name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . task _ icon _ transition _ name ) Ġ+ Ġ"_ $ binding Adapter Position " ĊĠĠĠĠĠĠĠ Ġbinding . tasks GroupName . transition Name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . tasks _ group _ name _ transition _ name ) Ġ+ Ġ"_ $ binding Adapter Position " ĊĠĠĠĠĠĠĠ Ġbinding . tasks Progress bar . transition Name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . tasks _ progress _ bar _ transition _ name ) Ġ+ Ġ"_ $ binding Adapter Position " ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ 2 0 - 0 5 - 2 0 2 1 Ġ 2 0 : 5 3 ĠThe Ġtransitions Ġdo Ġnot Ġwork Ġon Ġchanging Ġthe Ġfont Ġsize ĊĠĠĠĠĠĠĠ Ġ// Ġ ĠCustom Ġsolution Ġpresented Ġat ĠGoogle ĠI / O Ġ 2 0 1 6 : Ġhttps :// www . youtube . com / watch ? v = 4 L 4 f Lr WD v AU & t = 1 0 5 1 s ĊĠĠĠĠĠĠĠ Ġbinding . tasks Count . transition Name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . tasks _ count _ transition _ name ) Ġ+ Ġ"_ $ binding Adapter Position " ĊĠĠĠĠĠĠĠ Ġbinding . tasks Progress . transition Name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . task _ progress _ transition _ name ) Ġ+ Ġ"_ $ binding Adapter Position " ĊĠĠĠ Ġ} Ċ } ĊĊ