package Ġcom . t uan hv . mv vm arch . sample . ui . main . fragment . home feed . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . t uan hv . mv vm arch . base . entity . Post Ċ import Ġcom . t uan hv . mv vm arch . base . ui . common . Load More Simple Adapter Ċ import Ġcom . t uan hv . mv vm arch . sample . databinding . Rv Item Load More Binding Ċ import Ġcom . t uan hv . mv vm arch . sample . databinding . Rv Item Post Binding Ċ import Ġcom . t uan hv . mv vm arch . sample . ui . main . adapter . helper . OnLoad More ViewModel Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġho ang . van . t uan Ġon Ġ 9 / 1 4 / 2 0 . Ċ Ġ*/ Ċ class ĠPost Adapter ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠviewModel : ĠOn Load More ViewModel , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġitem ClickListener : ĠOn ItemClickListener , ĊĠĠĠĠĠĠĠ Ġload More Listener : ĠOn Load More Listener Ċ ) Ġ: ĠLoad More Simple Adapter < Post , ĠR v Item Post Binding , ĠR v Item Load More Binding >( re cyclerView , Ġload More Listener ) Ġ{ ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( item : ĠPost ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Item Binding ( parent : ĠViewGroup ): ĠR v Item Post Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠR v Item Post Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Load More Binding ( parent : ĠViewGroup ): ĠR v Item Load More Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠR v Item Load More Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind Item ( binding : ĠR v Item Post Binding , Ġitem : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . post Ġ= Ġitem ĊĊĠĠĠĠĠĠĠ ĠG lide . with ( binding . post Image ). load ( item . image ). into ( binding . post Image ) ĊĊĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener . on Item Click ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind Load More ( binding : ĠR v Item Load More Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Posts ( posts : ĠList < Post >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposts . forEach Ġ{ Ġnew Post Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġduplicate Ġpost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . removeAll Ġ{ Ġold Post Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Post ?. id Ġ== Ġnew Post . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitems . addAll ( posts ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Post ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. id Ġ== Ġpost . id ĊĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Post ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . removeAll Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. id Ġ== Ġpost . id ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ