package Ġapp . vide op layer ins ider ec y cl er view . views . facebook Screen Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġapp . vide op layer ins ider ec y cl er view . R Ċ import Ġapp . vide op layer ins ider ec y cl er view . models . Media Object Ċ import Ġapp . vide op layer ins ider ec y cl er view . utils . Player View Adapter . Companion . play Index Then Pause Previous Player Ċ import Ġapp . vide op layer ins ider ec y cl er view . utils . Player View Adapter . Companion . release All Players Ċ import Ġapp . vide op layer ins ider ec y cl er view . utils . RecyclerView Scroll Listener Ċ import Ġapp . vide op layer ins ider ec y cl er view . view Models . Media ViewModel Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ // Ġcreate Ġby ĠMost afa ĠAn ter Ċ class ĠFacebook Screen Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġre cyclerView : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠFacebook Recycler Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġmodel List Ġ= ĠArrayList < Media Object >() ĊĊĠĠĠ Ġ// Ġfor Ġhandle Ġscroll Ġand Ġget Ġfirst Ġvisible Ġitem Ġindex ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġscroll Listener : ĠRecyclerView Scroll Listener ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . fragment _ facebook _ player , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġfind Views ( view ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Adapter () ĊĊĠĠĠĠĠĠĠ Ġ// Ġload Ġdata ĊĠĠĠĠĠĠĠ Ġval Ġmodel : ĠMedia ViewModel Ġby Ġview Models () ĊĠĠĠĠĠĠĠ Ġmodel . get Media (). observe ( require Activity (), ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. update List ( array ListOf (* it . to Typed Array ())) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Views ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġview . findViewById < View >( R . id . recycler _ view ) Ġas ĠRecyclerView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠFacebook Recycler Adapter ( require Activity (), Ġmodel List ) ĊĠĠĠĠĠĠĠ Ġre cyclerView !!. set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġa Ġlinear Ġlayout Ġmanager ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġre cyclerView !!. layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġre cyclerView !!. adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠ Ġscroll Listener Ġ= Ġobject Ġ: ĠRecyclerView Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Is First Visible Item ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" visible Ġitem Ġindex ", Ġindex . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġplay Ġjust Ġvisible Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Index Then Pause Previous Player ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView !!. add On Scroll Listener ( scroll Listener ) ĊĠĠĠĠĠĠĠ Ġm Adapter !!. Set On ItemClickListener ( object Ġ: ĠFacebook Recycler Adapter . On ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView ?, Ġposition : ĠInt , Ġmodel : ĠMedia Object ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġrelease All Players () ĊĠĠĠ Ġ} Ċ }