package Ġcom . example . st omp covid rum ors Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ListView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . google . firebase . database .* Ċ import Ġjava . lang . Exception Ċ import Ġjava . util . ArrayList ĊĊ Ċ class ĠHome Activity Ġ: ĠActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Example - Firebase Realtime Database " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTHOR _ NAME Ġ= Ġ" course . examples . firebase . my home library . author name " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTHOR _ ID Ġ= Ġ" course . examples . firebase . my home library . author id " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbottom Navigation View : ĠBottom Navigation View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase Posts : ĠDatabase Reference ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġposts : ĠMutable List < Post > ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠlistView Posts : ĠListView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġup Vote ImageView : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdown Vote ImageView : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġup Vote TextView : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdown Vote TextView : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠcurrentUser Ġ: ĠString ĊĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . home ) ĊĠĠĠĠĠĠĠ Ġdatabase Posts Ġ= ĠFirebase Database . getInstance (). getReference (" st omp covid rum ors ") ĊĠĠĠĠĠĠĠ Ġposts Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġbottom Navigation View Ġ= ĠfindViewById < View >( R . id . bottom _ navigation ) Ġas ĠBottom Navigation View ĊĠĠĠĠĠĠĠ ĠlistView Posts Ġ= ĠfindViewById < View >( R . id . list View Home ) Ġas ĠListView ĊĠĠĠĠĠĠĠ Ġbottom Navigation View . setOn Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> Ġbottom Navigation Listener ( item ) Ġ} ĊĠĠĠĠĠĠĠ Ġbottom Navigation View . menu . getItem ( 0 ). isChecked Ġ= Ġtrue ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġ// att aching Ġvalue Ġevent Ġlistener ĊĠĠĠĠĠĠĠ Ġdatabase Posts . add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// clear ing Ġthe Ġprevious Ġartist Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpost : ĠPost ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// iter ating Ġthrough Ġall Ġthe Ġnodes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Snapshot Ġin Ġdata Snapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// getting Ġartist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ= Ġpost Snapshot . getValue ( Post :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// catch Ġexception Ġwhere Ġthe Ġauthor Ġis Ġnot Ġan Ġauthor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// adding Ġauthor Ġto Ġthe Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts . add ( post !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts Ġ= Ġposts . as Re versed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// creating Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Adapter Ġ= ĠPosts List ( this @ Home Activity , Ġposts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurr User Ġ= Ġintent . getString Extra (" user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( curr User Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr User Ġ= Ġ" anonymous " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Adapter . setCurrent User ( curr User ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// att aching Ġadapter Ġto Ġthe Ġlist view ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistView Posts . adapter Ġ= Ġpost Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbottom Navigation Listener ( item Ġ: ĠMenuItem ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġintent . getString Extra (" user ") ĊĊĠĠĠĠĠĠĠ Ġwhen ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . search Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Intent Ġ= ĠIntent ( this , ĠSearch Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Intent . putExtra (" user ", Ġuser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( search Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . new _ post Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Intent Ġ= ĠIntent ( this , ĠNew Post Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Intent . putExtra (" user ", Ġuser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( post Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . profile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprofile Intent Ġ= ĠIntent ( this , ĠProfile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Intent . putExtra (" user ", Ġuser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( profile Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }