package Ġde . hpi . android . news . presentation . detail Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . style . Image Span Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . text . to Sp ann able Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġde . hpi . android . core . data . Id Ċ import Ġde . hpi . android . core . presentation . base . Base Fragment Ċ import Ġde . hpi . android . core . presentation . utils . format DateTime Relative Ċ import Ġde . hpi . android . core . presentation . utils . viewModel Ċ import Ġde . hpi . android . news . R Ċ import Ġde . hpi . android . news . databinding . News Fragment Article Detail Binding Ċ import Ġkotlinx . android . synt hetic . main . news _ fragment _ article _ detail .* Ċ Ċ class ĠArticle Detail Fragment Ġ: ĠBase Fragment < News Fragment Article Detail Binding , ĠArticle Detail ViewModel >() Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġby Ġnav Args < Article Detail Fragment Args >() ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠviewModel Ġ{ ĠArticle Detail ViewModel ( Id ( args . id )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Binding ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠNews Fragment Article Detail Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNews Fragment Article Detail Binding . inflate ( in flater , Ġcontainer , Ġfalse ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . vm Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . article . observe ( this , ĠObserver Ġ{ Ġarticle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( article Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta . text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġcontext !!. format DateTime Relative ( article . date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta . text Ġ= Ġif Ġ( article . view Count Ġ!= Ġnull ) ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . news _ detail _ meta _ view Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarticle . source . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarticle . view Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). to Sp ann able (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠindexOf ('@ ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Span ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Span ( context !!. get Drawable ( R . drawable . news _ ic _ outline _ remove _ red _ eye _ 2 4 px ) !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Bounds ( 0 , Ġ 0 , Ġmeta . line Height , Ġmeta . line Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Tint ( meta . current TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠgetString ( R . string . news _ detail _ meta , Ġarticle . source . title , Ġdate ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ