package Ġcom . example . android tab bar . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . android tab bar . R Ċ import Ġcom . example . android tab bar . dataSource . DataSource Ċ import Ġcom . example . android tab bar . dataSource . User Ċ import Ġcom . example . android tab bar . dataSource . Users Adapter Ċ import Ġcom . example . android tab bar . extensions . pop Bottom Navigation Ċ import Ġcom . example . android tab bar . extensions . push Bottom Navigation Ċ import Ġcom . example . android tab bar . utils . Root Fragment ĊĊ Ċ class ĠUsers List Fragment ( nav Host Id : ĠInt ) Ġ: ĊĠĠĠ ĠRoot Fragment ( nav Host Id ), ĊĠĠĠ ĠUsers Adapter . On ItemClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġback Button : ĠImage Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġusers RecyclerView : ĠRecyclerView ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠUsers Adapter ĊĊĠĠĠ Ġvar Ġuser : ĠUser ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ users _ list , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinstantiate UI Components ( root View ) ĊĠĠĠĠĠĠĠ Ġsetup Back Button Visibility () ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġsetup Back Button Listener () ĊĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUsers Adapter . On ItemClickListener ĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( model : ĠUser , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Fragment Ġ= ĠUser Profile Fragment ( nav Host ) ĊĠĠĠĠĠĠĠ Ġuser Profile Fragment . user Ġ= Ġmodel ĊĠĠĠĠĠĠĠ Ġpush Bottom Navigation ( nav Host , Ġuser Profile Fragment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUtils ĊĠĠĠ Ġprivate Ġfun Ġinstantiate UI Components ( root View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġback Button Ġ= Ġroot View . findViewById ( R . id . back Button ) ĊĠĠĠĠĠĠĠ Ġusers RecyclerView Ġ= Ġroot View . findViewById ( R . id . users RecyclerView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Back Button Visibility () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĠDataSource . fetch Random User () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Friends Ġ= ĠDataSource . fetch Random Friends For ( user ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠUsers Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Friends , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġusers RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġusers RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Back Button Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġback Button . setOnClickListener Ġ{ Ġpop Bottom Navigation ( this ) Ġ} ĊĠĠĠ Ġ} Ċ }