package Ġcom . example . android . material me Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . helper . Item Touch Helper Ċ import Ġandroid . widget . Toast Ċ import Ġcom . tech nor ip . kr an io z . recycler api . Models . Red dit News Response Ċ import Ġcom . tech nor ip . kr an io z . recycler api . Models . Sport Ċ import Ġcom . tech nor ip . kr an io z . recycler api . Services . Red dit ApiService Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . util .* Ċ Ċ /*** Ċ Ġ* ĠMain ĠActivity Ġfor Ġthe ĠMaterial ĠMe Ġapp , Ġa Ġmock Ġs ports Ġnews Ġapplication Ċ Ġ* Ġwith Ġpoor Ġdesign Ġchoices . Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// ĠMember Ġvariables . ĊĠĠĠ Ġprivate Ġvar Ġm RecyclerView : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm S ports Data : ĠArrayList < Sport >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠS ports Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġre dd it Api Ser Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRed dit ApiService . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdis posable : ĠDis posable ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe ĠRecyclerView . ĊĠĠĠĠĠĠĠ Ġm RecyclerView Ġ= ĠfindViewById ( R . id . re cyclerView ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠLayout ĠManager . ĊĠĠĠĠĠĠĠ Ġm RecyclerView !!. layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe ĠArrayList Ġthat Ġwill Ġcontain Ġthe Ġdata . ĊĠĠĠĠĠĠĠ Ġm S ports Data Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe Ġadapter Ġand Ġset Ġit Ġto Ġthe ĠRecyclerView . ĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠS ports Adapter ( this , Ġm S ports Data !! ) ĊĠĠĠĠĠĠĠ Ġm RecyclerView !!. adapter Ġ= Ġm Adapter ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġdata . Ċ // ĠĠĠĠĠĠĠ Ġinitialize Data () ĊĠĠĠĠĠĠĠ Ġinitial Api Data () ĊĊĠĠĠĠĠĠĠ Ġ// ĠHelper Ġclass Ġfor Ġcreating Ġswipe Ġto Ġdismiss Ġand Ġdrag Ġand Ġdrop ĊĠĠĠĠĠĠĠ Ġ// Ġfunctionality . ĊĠĠĠĠĠĠĠ Ġval Ġhelper Ġ= ĠItem Touch Helper ( object Ġ: ĠItem Touch Helper . Simple Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper . LEFT Ġor ĠItem Touch Helper . RIGHT Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper . DOWN Ġor ĠItem Touch Helper . UP , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper . LEFT Ġor ĠItem Touch Helper . RIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDefines Ġthe Ġdrag Ġand Ġdrop Ġfunctionality . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġre cyclerView ĠThe ĠRecyclerView Ġthat Ġcontains Ġthe Ġlist Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠviewHolder ĠThe ĠS ports ViewHolder Ġthat Ġis Ġbeing Ġmoved ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtarget ĠThe ĠS ports ViewHolder Ġthat Ġyou Ġare Ġswitching Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġoriginal Ġone Ġwith . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġitem Ġwas Ġmoved , Ġfalse Ġotherwise ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Move ( re cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġfrom Ġand Ġto Ġpositions . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfrom Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Ġ= Ġtarget . adapter Position ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSwap Ġthe Ġitems Ġand Ġnotify Ġthe Ġadapter . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . swap ( m S ports Data !! , Ġfrom , Ġto ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter !!. notify Item Moved ( from , Ġto ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDefines Ġthe Ġswipe Ġto Ġdismiss Ġfunctionality . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠviewHolder ĠThe Ġview holder Ġbeing Ġsw ip ed . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdirection ĠThe Ġdirection Ġit Ġis Ġsw ip ed Ġin . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġthe Ġitem Ġfrom Ġthe Ġdataset . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm S ports Data !!. remove At ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNotify Ġthe Ġadapter . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter !!. notify Item Removed ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAttach Ġthe Ġhelper Ġto Ġthe ĠRecyclerView . ĊĠĠĠĠĠĠĠ Ġhelper . attach To RecyclerView ( m RecyclerView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitial Api Data () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġget Ġthe Ġapi Ġresponse Ġand Ġpopulate Ġthe Ġdata ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġre dd it Api Ser . get Top ("", Ġ" 2 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresult Ġ-> Ġload Data ( result ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĠToast . makeText ( this , Ġerror . message , ĠToast . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data ( api Res : ĠRed dit News Response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠClear Ġthe Ġexisting Ġdata Ġ( to Ġavoid Ġduplication ). ĊĠĠĠĠĠĠĠ Ġm S ports Data !!. clear () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠArrayList Ġof ĠS ports Ġobjects Ġwith Ġtitles Ġand ĊĠĠĠĠĠĠĠ Ġ// Ġinformation Ġabout Ġeach Ġs port . ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġapi Res . data . children ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm S ports Data !!. add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS port ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . data . author , Ġi . data . title , Ġi . data . thumbnail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠNotify Ġthe Ġadapter Ġof Ġthe Ġchange . ĊĠĠĠĠĠĠĠ Ġm Adapter !!. notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ