package Ġcom . mart dev . android . my gallery . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . mart dev . android . domain . phot om odel . Photo Ċ import Ġcom . mart dev . android . domain . vide om odel . Video Ċ import Ġcom . mart dev . android . my gallery . databinding . Photo ListItem Binding Ċ import Ġcom . mart dev . android . my gallery . databinding . Video ListItem Binding Ċ Ċ class ĠPhoto Data Holder ( ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠPhoto ListItem Binding Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind To ( photo : ĠPhoto , Ġlistener : Ġ( Photo ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . photo Src Ġ= Ġphoto ĊĠĠĠĠĠĠĠ Ġbinding . download Photo . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( photo ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ): ĠPhoto Data Holder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠPhoto ListItem Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPhoto Data Holder ( binding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠVideo Data Holder ( ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠVideo ListItem Binding , ĊĠĠĠ Ġprivate Ġval Ġclick Listener : ĠOn ClickListener Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind To ( video : ĠVideo , Ġlistener : Ġ( Video ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . video Ġ= Ġvideo ĊĠĠĠĠĠĠĠ Ġbinding . play Video . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener . onClick ( video . video _ files [ 0 ]. link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . download Video . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( video ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup , Ġclick Listener : ĠOn ClickListener ): ĠVideo Data Holder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠVideo ListItem Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠVideo Data Holder ( binding , Ġclick Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠOn ClickListener ( private Ġval Ġclick Listener : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfun ĠonClick ( string Uri : ĠString ) Ġ= Ġclick Listener ( string Uri ) Ċ } Ċ Ċ // class ĠNetwork State ViewHolder ( Ċ // ĠĠĠ Ġprivate Ġval Ġbinding : ĠNetwork State View Binding Ċ // ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ Ċ // Ċ // ĠĠĠ Ġfun Ġ< T > Ġbind To ( result : ĠT ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġbinding . result Ġ= Ġresult Ġas ĠResult < *> Ċ // ĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġcompanion Ġobject Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ): ĠNetwork State ViewHolder Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠNetwork State View Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNetwork State ViewHolder ( binding ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ //}