package Ġcom . doctor . yum yum . presentation . ui . recipe detail Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . doctor . yum yum . R Ċ import Ġcom . doctor . yum yum . common . base . Base Activity Ċ import Ġcom . doctor . yum yum . common . utils . REQUEST _ CODE Ċ import Ġcom . doctor . yum yum . common . utils . dp ToInt Px Ċ import Ġcom . doctor . yum yum . databinding . Activity Recipe Detail Binding Ċ import Ġcom . doctor . yum yum . presentation . adapter . Recipe Detail Adapter Ċ import Ġcom . doctor . yum yum . presentation . adapter . T aste Tag Adapter Ċ import Ġcom . doctor . yum yum . presentation . adapter . Write Tag Adapter Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠRecipe Detail Activity Ġ: ĊĠĠĠ ĠBase Activity < Activity Recipe Detail Binding >( R . layout . activity _ recipe _ detail ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider . New Instance Factory () ĊĠĠĠĠĠĠĠ Ġ) [ Recipe Detail ViewModel :: class . java ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Layout Height () ĊĊĠĠĠĠĠĠĠ Ġval Ġrecipe Id Ġ= Ġintent . extras ?. getInt (" recipe Id ") Ġ?: Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Rv Plus . adapter Ġ= ĠWrite Tag Adapter Ġ{} ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Rv Minus . adapter Ġ= ĠWrite Tag Adapter Ġ{} ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Rv T aste . adapter Ġ= ĠT aste Tag Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Ib Menu . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecipe Menu Dialog ( recipe Id ). show ( support FragmentManager , Ġ" Recipe Menu Dialog ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Ib Back . setOnClickListener Ġ{ Ġfinish () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Ib Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecipe Delete Dialog { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete Recipe Ġ= Ġlifecycle Scope . async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Recipe ( recipe Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Recipe . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( REQUEST _ CODE . DELETE _ RE CI PE , intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show ( support FragmentManager ," Delete Recipe ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġëł Ī ìĭľ íĶ ¼ Ġìĥģ ìĦ¸ Ġì¡° íļĮ ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get Recipe Detail ( recipe Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . error State . observe ( this ) Ġ{ Ġres Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( getString ( res Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġëł Ī ìĭľ íĶ ¼ ĠìĿ´ë¯¸ ì§Ģ Ġë · ° íİ ĺìĿ´ ìłĢ ĠìĦ¤ìłķ ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Vp Image . adapter Ġ= ĠRecipe Detail Adapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Layout Height () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġweight Ġê¸ ¸ ìĿ´ ìĹĲ ĠëĶ° ë¥¸ ĠìĿ´ë¯¸ ì§Ģ Ġë · ° Ġheight ĠìĦ¤ìłķ ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġthis . window Manager ?. default Display ?. get Metrics ( display Metrics ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Height Ġ= Ġ( display Metrics . width Pixels Ġ* Ġ 0 . 8 ). toInt () ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Vp Image . layout Params . height Ġ= Ġimage Height ĊĊĠĠĠĠĠĠĠ Ġ// ĠìĿ´ë¯¸ ì§Ģ Ġë · ° Ġheight ĠìĹĲ ĠëĶ° ë¥¸ Ġìĥģ ìĦ¸ ĠíĻ Ķ ë©´ Ġcontent Ġtop Ġpadding ĠìĦ¤ìłķ ĊĠĠĠĠĠĠĠ Ġval Ġpadding Top Ġ= Ġimage Height Ġ- Ġdp ToInt Px ( 6 2 f ) ĊĠĠĠĠĠĠĠ Ġbinding . recipe Detail Sv Content . set Padding ( 0 , Ġpadding Top , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} Ċ }