package Ġio . sc er . ide . ui . home . fragments Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . widget . Swipe Refresh Layout Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . LinearLayout Ċ import Ġio . sc er . ide . R Ċ import Ġio . sc er . ide . db . entity . News Entity Ċ import Ġio . sc er . ide . ui . news . News Activity Ċ import Ġio . sc er . ide . view model . News ViewModel Ċ import Ġio . sc er . ui . News Card Ċ Ċ class ĠNews Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this ). get ( News ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnews View : ĠLinearLayout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrefresh View : ĠSw ipe Refresh Layout ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġanimation : ĠAnimation ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ news , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġnews View Ġ= Ġview . findViewById ( R . id . layout ) ĊĠĠĠĠĠĠĠ Ġrefresh View Ġ= Ġview . findViewById ( R . id . refresh ) ĊĊĠĠĠĠĠĠĠ Ġanimation Ġ= ĠAnimation Utils . load Animation ( context , ĠR . anim . fade _ and _ translate ) ĊĊĠĠĠĠĠĠĠ Ġthis . viewModel . getAll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , Ġnews Observer ) ĊĠĠĠĠĠĠĠ Ġrefresh View . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . viewModel . getAll () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnews Observer Ġ= ĠObserver < List < News Entity >> Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( news View . child Count Ġ> Ġ 0 ) Ġnews View . removeAll Views () ĊĠĠĠĠĠĠĠ Ġif Ġ( list Ġ=== Ġnull ) Ġreturn @ Observer ĊĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ Ġnews Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnews To Append Ġ= ĠNews Card ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( news . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDescription ( news . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setImage ( news . image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Link ( news . link ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Click Read More ( View . OnClickListener Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠNews Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" NE WS _ ID ", Ġnews . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Click Share ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view !! , ĠR . string . not _ implemented , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnews View . addView ( news To Append ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrefresh View . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġnews View . start Animation ( animation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġthis . viewModel . getAll (). remove Observer ( news Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠNews Fragment () ĊĠĠĠ Ġ} Ċ Ċ } Ċ