package Ġxyz . ram il . pi k av iew er . view . adapters Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . widget . PopupMenu Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . view . get Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġxyz . ram il . pi k av iew er . R Ċ import Ġxyz . ram il . pi k av iew er . database . Data Base Manager Ċ import Ġxyz . ram il . pi k av iew er . model . Post Model ĊĊ Ċ class ĠPost Adapter ( private Ġvar Ġdata : ĠList < Post Model >, Ġprivate Ġval Ġcontext : ĠContext , Ġview : ĠView ?) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Post Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠOn Item Click ( post Model : ĠPost Model ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm On ItemClickListener : ĠOn ItemClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset On ItemClickListener ( on ItemClickListener : ĠOn ItemClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm On ItemClickListener Ġ= Ġon ItemClickListener ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġupdate ( data : ĠList < Post Model >, Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrow Item Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ feed , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( row Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( m On ItemClickListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . cv Post . setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm On ItemClickListener ?. On Item Click ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. images Ġ!= Ġnull Ġ&& Ġ! data [ position ]. images ?. isEmpty () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġdata [ position ]. images ?. get ( 0 ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Options . placeholder Of ( R . drawable . ic _ launcher _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ launcher _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . image ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. body Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. body ?. isEmpty () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . body . visibility Ġ= ĠView . GONE Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . body . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . body . text Ġ= Ġdata [ position ]. body ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġholder . body . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġdata [ position ]. title ĊĊĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. images Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. images ?. size !! Ġ> Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmall Image Rv Init ( holder , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. images ?. size !! Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . rv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . rv . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmenu Click ( holder , Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsmall Image Rv Init ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfeed Image Adapter : ĠFeed Image Adapter ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġre cyclerView : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġholder . rv ĊĠĠĠĠĠĠĠ Ġre cyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġhorizontal Layout Man aga er Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġhorizontal Layout Man aga er ĊĠĠĠĠĠĠĠ Ġfeed Image Adapter Ġ= Ġcontext . let Ġ{ ĠFeed Image Adapter ( mutable ListOf (), Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġfeed Image Adapter ĊĊĠĠĠĠĠĠĠ Ġval Ġimage List : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġimage List . addAll ( data [ position ]. images Ġas ĠMutable List < String >) ĊĠĠĠĠĠĠĠ Ġimage List . remove At ( 0 ) ĊĠĠĠĠĠĠĠ Ġ// TODO ĠÐ¿ Ð¾ÑģÑĤ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÑģ Ð¾Ð¶ ÐµÑĢÐ¶ Ð°ÑĤÑĮ ĠÐ¼ Ð½Ð¾Ð³Ð¾ ĠÐ¸Ð· Ð¾Ð±ÑĢÐ°Ð¶ ÐµÐ½Ð¸Ð¹ , ĠÐ´Ð»Ñı ĠÐ¿ÑĢ Ð¾Ð²ÐµÑĢ ÐºÐ¸ ĠÑĢÐ°Ð±Ð¾ÑĤ Ñĭ ĠÑģ ĠÑĤÐ°Ðº Ð¸Ð¼ ĠÐ¿ Ð¾ÑģÑĤ Ð¾Ð¼ Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") Ċ // ĠĠĠĠĠĠĠ Ġimage List . add (" https :// i . stack . imgur . com / 9 TE LO . png ") ĊĠĠĠĠĠĠĠ Ġfeed Image Adapter . update ( image List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmenu Click ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . menu . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpop Ġ= ĠPopup Menu ( context , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop . inflate ( R . menu . popup _ post ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ position ]. save !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop . menu . get ( 0 ). title Ġ= Ġcontext . getString ( R . string . remove _ from _ saved ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop . menu . get ( 0 ). title Ġ= Ġcontext . getString ( R . string . save ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Save Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! data [ position ]. save !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Ġ= Ġdata [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . save Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Manager . insert Data ( context , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop . menu . get ( 0 ). title Ġ= Ġcontext . getString ( R . string . save ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Ġ= Ġdata [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . save Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Manager . insert Data ( context , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop . menu . get ( 0 ). title Ġ= Ġcontext . getString ( R . string . remove _ from _ saved ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ), ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġbody : ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġimage : ĠImageView ĊĠĠĠĠĠĠĠ Ġval Ġmenu : ĠImageView ĊĠĠĠĠĠĠĠ Ġval Ġrv : ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġval Ġcv Post : ĠCard View ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġview . findViewById ( R . id . tv Post Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġview . findViewById ( R . id . tv Post Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġview . findViewById ( R . id . iv Picture ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Ġ= Ġview . findViewById ( R . id . iv Menu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Ġ= Ġview . findViewById ( R . id . rv Small ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv Post Ġ= Ġview . findViewById ( R . id . cv Post ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }