/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . compose . ui . lazy Ċ Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column For Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column For Indexed Ċ import Ġandroidx . compose . foundation . lazy . Lazy Row Ċ import Ġandroidx . compose . foundation . lazy . Lazy Row For Ċ import Ġandroidx . compose . foundation . lazy . Lazy Row For Indexed Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . empty Content Ċ import Ġandroidx . compose . test utils . assert No Pending Changes Ċ import Ġandroidx . compose . test utils . benchmark . Compose Benchmark Rule Ċ import Ġandroidx . compose . test utils . do Frames Until No Changes Pending Ċ import Ġandroidx . compose . test utils . Compose TestCase Ċ import Ġandroidx . compose . ui . layout . Layout Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . layout . Re measurement Ċ import Ġandroidx . compose . ui . layout . Re measurement Modifier Ċ import Ġandroidx . compose . ui . draw Layer Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ Ċ @ Large Test Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠLazy List Scrolling Benchmark ( ĊĠĠĠ Ġprivate Ġval ĠtestCase : ĠLazy List Scrolling TestCase Ċ ) Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġbenchmark Rule Ġ= ĠCompose Benchmark Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmeasure _ not Adding New Items As Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . toggle State Benchmark Measure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Re measure TestCase ( false , ĠtestCase . content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmeasure _ adding New Item As Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . toggle State Benchmark Measure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Re measure TestCase ( true , ĠtestCase . content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdraw _ not Adding New Items As Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . toggle State Benchmark Draw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Re measure TestCase ( false , ĠtestCase . content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdraw _ adding New Item As Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . toggle State Benchmark Draw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Re measure TestCase ( true , ĠtestCase . content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ"{ 0 }") ĊĠĠĠĠĠĠĠ Ġfun Ġinit Parameters (): ĠArray < Lazy List Scrolling TestCase > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column With Item And Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column With Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column With Items Indexed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column For , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column For Indexed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Row With Item And Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Row With Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Row With Items Indexed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Row For , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Row For Indexed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLazy List Scrolling TestCase ( ĊĠĠĠ Ġprivate Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġcontent : Ġ@ Composable ĠList Re measure TestCase . () Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Column With Item And Items Ġ= ĠLazy List Scrolling TestCase (" Lazy Column With Item And Items ") Ġ{ ĊĠĠĠ ĠLazy Column ( modifier Ġ= ĠModifier . height ( 4 0 0 . dp ). fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitems ( items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Column With Items Ġ= ĠLazy List Scrolling TestCase (" Lazy Column With Items ") Ġ{ ĊĠĠĠ ĠLazy Column ( modifier Ġ= ĠModifier . height ( 4 0 0 . dp ). fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems ( items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Column With Items Indexed Ġ= ĠLazy List Scrolling TestCase (" Lazy Column With Items Indexed ") Ġ{ ĊĠĠĠ ĠLazy Column ( modifier Ġ= ĠModifier . height ( 4 0 0 . dp ). fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems Indexed ( items ) Ġ{ Ġindex , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Column For Ġ= ĠLazy List Scrolling TestCase (" Lazy Column For ") Ġ{ ĊĠĠĠ ĠLazy Column For ( items , Ġmodifier Ġ= ĠModifier . height ( 4 0 0 . dp ). fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Column For Indexed Ġ= ĠLazy List Scrolling TestCase (" Lazy Column For Indexed ") Ġ{ ĊĠĠĠ ĠLazy Column For Indexed ( items , Ġmodifier Ġ= ĠModifier . height ( 4 0 0 . dp ). fill Max Width ()) Ġ{ Ġindex , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Row With Item And Items Ġ= ĠLazy List Scrolling TestCase (" Lazy Row With Item And Items ") Ġ{ ĊĠĠĠ ĠLazy Row ( modifier Ġ= ĠModifier . width ( 4 0 0 . dp ). fill Max Height ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitems ( items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Row With Items Ġ= ĠLazy List Scrolling TestCase (" Lazy Row With Items ") Ġ{ ĊĠĠĠ ĠLazy Row ( modifier Ġ= ĠModifier . width ( 4 0 0 . dp ). fill Max Height ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems ( items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Row With Items Indexed Ġ= ĠLazy List Scrolling TestCase (" Lazy Row With Items Indexed ") Ġ{ ĊĠĠĠ ĠLazy Row ( modifier Ġ= ĠModifier . width ( 4 0 0 . dp ). fill Max Height ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems Indexed ( items ) Ġ{ Ġindex , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Row For Ġ= ĠLazy List Scrolling TestCase (" Lazy Row For ") Ġ{ ĊĠĠĠ ĠLazy Row For ( items , Ġmodifier Ġ= ĠModifier . width ( 4 0 0 . dp ). fill Max Height ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠLazy Row For Indexed Ġ= ĠLazy List Scrolling TestCase (" Lazy Row For Indexed ") Ġ{ ĊĠĠĠ ĠLazy Row For Indexed ( items , Ġmodifier Ġ= ĠModifier . width ( 4 0 0 . dp ). fill Max Height ()) Ġ{ Ġindex , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe meas ur able Item () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegular Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO ( b / 1 6 9 8 5 2 1 0 2 Ġuse Ġexisting Ġpublic Ġconstructs Ġinstead ) Ċ private Ġfun ĠCompose Benchmark Rule . toggle State Benchmark Measure ( ĊĠĠĠ Ġcase Factory : Ġ() Ġ-> ĠList Re measure TestCase Ċ ) Ġ{ ĊĠĠĠ Ġrun Benchmark For ( case Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Frames Until No Changes Pending () ĊĊĠĠĠĠĠĠĠ Ġmeasure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun With Timing Disabled Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget TestCase (). prepare For Toggle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Pending Changes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget TestCase (). toggle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Pending Changes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO ( b / 1 6 9 8 5 2 1 0 2 Ġuse Ġexisting Ġpublic Ġconstructs Ġinstead ) Ċ private Ġfun ĠCompose Benchmark Rule . toggle State Benchmark Draw ( ĊĠĠĠ Ġcase Factory : Ġ() Ġ-> ĠList Re measure TestCase Ċ ) Ġ{ ĊĠĠĠ Ġrun Benchmark For ( case Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Frame () ĊĊĠĠĠĠĠĠĠ Ġmeasure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun With Timing Disabled Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreset Ġthe Ġstate Ġand Ġdraw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget TestCase (). prepare For Toggle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtoggle Ġand Ġprepare Ġmeas uring Ġdraw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget TestCase (). toggle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Prepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun With Timing Disabled Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠList Re measure TestCase ( ĊĠĠĠ Ġval Ġadd New Item On Toggle : ĠBoolean , ĊĠĠĠ Ġval Ġcontent : Ġ@ Composable ĠList Re measure TestCase . () Ġ-> ĠUnit Ċ ) Ġ: ĠCompose TestCase Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġsize Ġ= Ġ 2 5 . dp ĊĠĠĠ Ġval Ġitems Ġ= ĠList ( 1 0 0 ) Ġ{ ĠListItem ( it ) Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġre measurement : ĠRe measurement ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠRe meas ur able Item () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty Content (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġobject Ġ: ĠRe measurement Modifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Re measurement Available ( re measurement : ĠRe measurement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ List Re measure TestCase . re measurement Ġ= Ġre measurement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġsize . toInt Px () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( size , Ġsize ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġoverride Ġfun ĠContent () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠRegular Item () Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( Modifier . draw Layer (). size ( 2 0 . dp ). background ( Color . Red , ĠRo unded Corner Shape ( 8 . dp ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprepare For Toggle () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( add New Item On Toggle Ġ&& Ġsize Ġ!= Ġ 2 5 . dp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 2 5 . dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre measurement !!. force Re measure () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( add New Item On Toggle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 1 5 . dp ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ== Ġ 2 5 . dp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 2 4 . dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 2 5 . dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre measurement !!. force Re measure () ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠListItem ( val Ġindex : ĠInt ) Ċ