package Ġcom . ba u . pu zz leg ame . ui . le aders Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcc . cloud ist . ac p library . AC Progress Flow er Ċ import Ġcom . ba u . pu zz leg ame . R Ċ import Ġcom . ba u . pu zz leg ame . helper . My Progress Dialog Ċ import Ġcom . ba u . pu zz leg ame . model . user Model Ċ import Ġcom . ba u . pu zz leg ame . ui . le aders . adapter . Leader Adapter Ċ import Ġcom . firebase . ui . database . Change EventListener Ċ import Ġcom . firebase . ui . database . Firebase Recycler Adapter Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Firebase Database Ċ Ċ class ĠLe aders Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġ// region ĠVariables ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroot : ĠView ĊĠĠĠ Ġlateinit Ġvar Ġle aders RecyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġvar Ġprogress Dialog : ĠAC Progress Flow er ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġm anger : ĠLinearLayoutManager ĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠFirebase Recycler Adapter < user Model , ĠLeader Adapter >? Ġ= Ġnull ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Ġ= Ġinflater . inflate ( R . layout . fragment _ le aders , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinit fragment () ĊĠĠĠĠĠĠĠ ĠsetData Leader () ĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// set Ġle aders Ġactivity ĊĠĠĠ Ġprivate Ġfun Ġinit fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġle aders RecyclerView Ġ= Ġroot . findViewById ( R . id . le aders _ rv _ leader Board ) ĊĠĠĠĠĠĠĠ Ġm anger Ġ= ĠLinearLayoutManager ( this . require Context (), ĠLinearLayoutManager . VERTICAL , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġle aders RecyclerView . layout Manager Ġ= Ġm anger ĊĠĠĠĠĠĠĠ Ġle aders RecyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠMy Progress Dialog (). get Inst anc ( this . require Activity ()) ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. show () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// get Ġle aders Ġdata Ġfrom Ġfirebase Ġdatabase Ġreal time ĊĠĠĠ Ġprivate Ġfun ĠsetData Leader () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Leader Reference Ġ= ĠFirebase Database . getInstance (). getReference (" users ") ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġm Leader Reference . orderBy Child (" score "). limit To Last ( 1 2 ) ĊĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= Ġobject Ġ: ĠFirebase Recycler Adapter < user Model , ĠLeader Adapter >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Model :: class . java , ĠR . layout . le aders _ card , ĠLeader Adapter :: class . java , Ġquery ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpopulate ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠLeader Adapter ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : Ġuser Model ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder !!. bind Leader ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Child Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠChange EventListener . EventType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsnapshot : ĠData Snapshot ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Index : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Child Changed ( type , Ġsnapshot , Ġindex , Ġold Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter !!. start Listening () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġle aders RecyclerView . scrollTo Position ( m Adapter !!. item Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġle aders RecyclerView . adapter Ġ= Ġm Adapter ĊĊĊĠĠĠ Ġ} Ċ Ċ }