package Ġcom . mike pen z . fast adapter . app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . mike pen z . fast adapter . I Adapter Ċ import Ġcom . mike pen z . fast adapter . adapters . Fast Item Adapter Ċ import Ġcom . mike pen z . fast adapter . app . dummy . Image Dummy Data Ċ import Ġcom . mike pen z . fast adapter . app . items . Image Item Ċ import Ġkotlinx . android . synt hetic . main . activity _ sample .* Ċ Ċ class ĠImage List Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġ// save Ġour ĠFast Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfast Item Adapter : ĠFast Item Adapter < Image Item > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ sample ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠToolbar ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. setTitle ( R . string . sample _ image _ list ) ĊĊĠĠĠĠĠĠĠ Ġ// create Ġour ĠFast Adapter Ġwhich Ġwill Ġmanage Ġeverything ĊĠĠĠĠĠĠĠ Ġfast Item Adapter Ġ= ĠFast Item Adapter () ĊĊĠĠĠĠĠĠĠ Ġ// configure Ġour Ġfast Adapter ĊĠĠĠĠĠĠĠ Ġfast Item Adapter . on ClickListener Ġ= Ġ{ Ġv : ĠView ?, Ġ_: ĠI Adapter < Image Item >, Ġitem : ĠImage Item , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( v . context , Ġitem . m Name , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// find Ġout Ġhow Ġmany Ġcolumns Ġwe Ġdisplay ĊĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġresources . getInteger ( R . integer . wall _ splash _ columns ) ĊĠĠĠĠĠĠĠ Ġif Ġ( columns Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// linear LayoutManager Ġfor Ġone Ġcolumn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// grid LayoutManager Ġfor Ġmore Ġthan Ġone Ġcolumn Ġ;) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġcolumns ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrv . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġrv . adapter Ġ= Ġfast Item Adapter ĊĊĠĠĠĠĠĠĠ Ġ// fill Ġwith Ġsome Ġsample Ġdata ĊĠĠĠĠĠĠĠ Ġfast Item Adapter . add ( Image Dummy Data . image Items ) ĊĊĠĠĠĠĠĠĠ Ġ// restore Ġselections Ġ( this Ġhas Ġto Ġbe Ġdone Ġafter Ġthe Ġitems Ġwere Ġadded ĊĠĠĠĠĠĠĠ Ġfast Item Adapter . with Saved InstanceState ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// a Ġcustom ĠOn Create ViewHolder Ġlistener Ġclass Ġwhich Ġis Ġused Ġto Ġcreate Ġthe Ġview Hold ers ĊĠĠĠĠĠĠĠ Ġ// we Ġdefine Ġthe Ġlistener Ġfor Ġthe Ġimage L oved Container Ġhere Ġfor Ġbetter Ġperformance ĊĠĠĠĠĠĠĠ Ġ// you Ġcan Ġalso Ġdefine Ġthe Ġlistener Ġwithin Ġthe Ġitems Ġbind View Ġmethod Ġbut Ġperformance Ġis Ġbetter Ġif Ġyou Ġdo Ġit Ġlike Ġthis ĊĠĠĠĠĠĠĠ Ġfast Item Adapter . add Event Hook ( Image Item . Image Item Heart Click Event ()) ĊĊĠĠĠĠĠĠĠ Ġ// set Ġthe Ġback Ġarrow Ġin Ġthe Ġtoolbar ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Home Button Enabled ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState (_ out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġout State Ġ= Ġ_ out State ĊĠĠĠĠĠĠĠ Ġ// add Ġthe Ġvalues Ġwhich Ġneed Ġto Ġbe Ġsaved Ġfrom Ġthe Ġadapter Ġto Ġthe Ġbundle ĊĠĠĠĠĠĠĠ Ġout State Ġ= Ġfast Item Adapter . save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// handle Ġthe Ġclick Ġon Ġthe Ġback Ġarrow Ġclick ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ