package Ġio . github . ros ari op fer nan des . fire co il sample app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġco il . request . Error Result Ċ import Ġco il . request . Success Result Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . google . firebase . storage . k tx . storage Ċ import Ġio . github . ros ari op fer nan des . fire co il . Fire Co il Ċ import Ġio . github . ros ari op fer nan des . fire co il . load Ċ import Ġio . github . ros ari op fer nan des . fire co il sample app . databinding . Activity Main Binding Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠimageView : ĠImageView ĊĊĠĠĠ Ġ// ĠTODO ( developer ): ĠChange Ġthis Ġto Ġpoint Ġto Ġyour Ġimage 's Ġpath Ġin ĠCloud ĠStorage ĊĠĠĠ Ġprivate Ġval Ġstorage Ref Ġ= ĠFirebase . storage . reference . child (" example . jpg ") ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ ĠimageView Ġ= Ġbinding . imageView ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . toolbar ) ĊĊĠĠĠĠĠĠĠ Ġbinding . btn ImageView K tx . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBasic Ġusage : ĠSimply Ġcall Ġthe ĠImageView . load () Ġextension Ġfunction ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . load ( storage Ref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġcustom Ġrequests , Ġyou Ġcan Ġpass Ġit Ġa Ġlambda Ġfunction : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠimageView . load ( storage Ref ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġcross fade ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Status . text Ġ= ĠgetString ( R . string . message _ image _ loaded , Ġ" the ĠImageView ĠK TX ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Get . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSince ĠImage Loader . get () Ġis Ġa Ġsuspend Ġfunction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit Ġmust Ġbe Ġcalled Ġfrom Ġa ĠCor outine Ġbuilder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠFire Co il . get ( this @ MainActivity , Ġstorage Ref ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOptionally : ĠAdd Ġget Ġparams Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġresult . drawable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Drawable ( drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Status . text Ġ= ĠgetString ( R . string . message _ image _ loaded , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Image Loader . get () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Status . text Ġ= ĠgetString ( R . string . error _ loading _ image , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . throwable . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Load . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠFire Co il . load ( this , Ġstorage Ref ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLoad Ġinto Ġthe ĠImageView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ( imageView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLoad Ġinto Ġany Ġother Ġtarget : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtarget Ġ{ Ġdrawable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOptionally , Ġyou Ġcan Ġcancel Ġthe Ġrequest Ġby Ġcalling Ġrequest . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Status . text Ġ= ĠgetString ( R . string . message _ image _ loaded , Ġ" Image Loader . load () ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ