package Ġcom . example . shop app . ui . i . activities Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . shop app . R Ċ import Ġcom . example . shop app . firestore . Fire store Class Ċ import Ġcom . example . shop app . models . Address Ċ import Ġcom . example . shop app . ui . i . adapters . Address ListAdapter Ċ import Ġcom . example . shop app . utils . Constants Ċ import Ġcom . example . shop app . utils . Swipe ToDelete Callback Ċ import Ġcom . example . shop app . utils . Swipe To Edit Callback Ċ import Ġkotlinx . android . synt hetic . main . activity _ address _ list .* Ċ Ċ class ĠAddress List Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Select Address : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ address _ list ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( Constants . EXTRA _ SELECT _ ADDRESS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Select Address Ġ= Ġintent . getBoolean Extra ( Constants . EXTRA _ SELECT _ ADDRESS , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup ActionBar () ĊĊĠĠĠĠĠĠĠ Ġ// Camb i ando Ġt ÃŃtulo Ġde Ġla Ġb arra Ġdepend i endo Ġde Ġsi Ġhay Ġo Ġno ĠAddress ĊĠĠĠĠĠĠĠ Ġif Ġ( m Select Address ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ title . text Ġ= Ġresources . getString ( R . string . title _ select _ address ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv _ add _ address . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Address List Activity , ĠAdd Edit Address Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠConstants . ADD _ ADDRESS _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget Address List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReceive Ġthe Ġresult Ġfrom Ġa Ġprevious Ġcall Ġto ĊĠĠĠĠ Ġ* Ġ{@ link Ġ# startActivity For Result ( Intent , Ġint )}. Ġ ĠThis Ġfollows Ġthe ĊĠĠĠĠ Ġ* Ġrelated ĠActivity ĠAPI Ġas Ġdescribed Ġthere Ġin ĊĠĠĠĠ Ġ* Ġ{@ link ĠActivity # on Activity Result ( int , Ġint , ĠIntent )}. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Code ĠThe Ġinteger Ġrequest Ġcode Ġoriginally Ġsupplied Ġto ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result (), Ġallowing Ġyou Ġto Ġidentify Ġwho Ġthis ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġcame Ġfrom . ĊĠĠĠĠ Ġ* Ġ@ param ĠresultCode ĠThe Ġinteger Ġresult Ġcode Ġreturned Ġby Ġthe Ġchild Ġactivity ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrough Ġits Ġset Result (). ĊĠĠĠĠ Ġ* Ġ@ param Ġdata ĠAn ĠIntent , Ġwhich Ġcan Ġreturn Ġresult Ġdata Ġto Ġthe Ġcaller ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( var ious Ġdata Ġcan Ġbe Ġattached Ġto ĠIntent Ġ" extras "). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠConstants . ADD _ ADDRESS _ REQUEST _ CODE ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Address List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ C ANCE LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA Ġlog Ġis Ġprinted Ġwhen Ġuser Ġclose Ġor Ġcancel Ġthe Ġimage Ġselection . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Request ĠCancel led ", Ġ" To Ġadd Ġthe Ġaddress .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ActionBar () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar _ address _ list _ activity ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġif Ġ( action Bar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . set Home As Up Indicator ( R . drawable . ic _ white _ color _ back _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoolbar _ address _ list _ activity . set Navigation OnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġfunction Ġto Ġget Ġthe Ġlist Ġof Ġaddress Ġfrom Ġcloud Ġfire store . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Address List () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġshow Progress Dialog ( resources . getString ( R . string . please _ wait )) ĊĠĠĠĠĠĠĠ ĠFire store Class (). get Addresses List ( this @ Address List Activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġfunction Ġto Ġget Ġthe Ġsuccess Ġresult Ġof Ġaddress Ġlist Ġfrom Ġcloud Ġfire store . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġaddress List ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsuccess Address List From Fire store ( address List : ĠArrayList < Address >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠHide Ġthe Ġprogress Ġdialog ĊĠĠĠĠĠĠĠ Ġhide Progress Dialog () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( address List . size Ġ> Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ address _ list . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ no _ address _ found . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ address _ list . layout Manager Ġ= ĠLinearLayoutManager ( this @ Address List Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ address _ list . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Adapter Ġ= ĠAddress ListAdapter ( this @ Address List Activity , Ġaddress List , Ġm Select Address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ address _ list . adapter Ġ= Ġaddress Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : ĠCRE ATING ĠTHE ĠS WI PE ĠACTIONS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Select Address ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Swipe Handler Ġ= Ġobject Ġ: ĠSw ipe To Edit Callback ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġrv _ address _ list . adapter Ġas ĠAddress ListAdapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Edit Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Address List Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Item Touch Helper Ġ= ĠItem Touch Helper ( edit Swipe Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Item Touch Helper . attach To RecyclerView ( rv _ address _ list ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete Swipe Handler Ġ= Ġobject Ġ: ĠSw ipe ToDelete Callback ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġprogress Ġdialog . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress Dialog ( resources . getString ( R . string . please _ wait )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFire store Class (). delete Address ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Address List Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress List [ view Holder . adapter Position ]. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete Item Touch Helper Ġ= ĠItem Touch Helper ( delete Swipe Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Item Touch Helper . attach To RecyclerView ( rv _ address _ list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ address _ list . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ no _ address _ found . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġfunction Ġnotify Ġthe Ġuser Ġthat Ġthe Ġaddress Ġis Ġdeleted Ġsuccessfully . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete Address Success () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠHide Ġprogress Ġdialog . ĊĠĠĠĠĠĠĠ Ġhide Progress Dialog () ĊĊĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Address List Activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . err _ your _ address _ deleted _ successfully ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠ Ġ). show () ĊĊĠĠĠĠĠĠĠ Ġget Address List () ĊĠĠĠ Ġ} Ċ Ċ }