package Ġcom . example . http data widget Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ListView Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . Navigation Ċ import Ġcom . example . http data widget . storage . Datasource Info Ċ import Ġcom . example . http data widget . storage . App Database Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġkotlin . properties . Deleg ates ĊĊ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* ĠActiv ities Ġthat Ġcontain Ġthis Ġfragment Ġmust Ġimplement Ġthe Ċ Ġ* Ġ[ Datasource List . On Fragment Interaction Listener ] Ġinterface Ċ Ġ* Ġto Ġhandle Ġinteraction Ġevents . Ċ Ġ* ĠUse Ġthe Ġ[ Datasource List . newInstance ] Ġfactory Ġmethod Ġto Ċ Ġ* Ġcreate Ġan Ġinstance Ġof Ġthis Ġfragment . Ċ Ġ*/ Ċ class ĠDat as ource List Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdb : ĠApp Database ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠlistView : ĠListView Ġby ĠDeleg ates . notNull () ĊĊĠĠĠ Ġinternal Ġval Ġon Button Click Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Ġ= ĠDat as ource Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb !!. datasource Info Dao (). insert ( item ) ĊĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġdb Ġ= ĠApp Database . getInstance ( context !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ datasource _ list , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠlistView Ġ= Ġview . findViewById ( R . id . list ) ĊĠĠĠĠĠĠĠ ĠlistView . empty View Ġ= Ġview . findViewById ( R . id . list _ empty _ view ) ĊĊĠĠĠĠĠĠĠ ĠlistView . setOn ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Item Ġ= ĠlistView . adapter . getItem ( position ) Ġas ĠDat as ource Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠDat as ource List Directions . action Datasource List To Datasource Edit ( selected Item . id !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( parent ). navigate ( action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠDat as ource ListAdapter ( context !! , ĠR . layout . list _ item ) ĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġdb !!. datasource Info Dao (). getAll (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . addAll ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġvar Ġel : ĠFloating ActionButton Ġ= Ġview . findViewById ( R . id . add _ button ) ĊĠĠĠĠĠĠĠ Ġel . setOnClickListener ( on Button Click ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġinterface Ġmust Ġbe Ġimplemented Ġby Ġactivities Ġthat Ġcontain Ġthis ĊĠĠĠĠ Ġ* Ġfragment Ġto Ġallow Ġan Ġinteraction Ġin Ġthis Ġfragment Ġto Ġbe Ġcommunic ated ĊĠĠĠĠ Ġ* Ġto Ġthe Ġactivity Ġand Ġpotentially Ġother Ġfragments Ġcontained Ġin Ġthat ĊĠĠĠĠ Ġ* Ġactivity . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġthe ĠAndroid ĠTraining Ġlesson Ġ[ Com munic ating Ġwith ĠOther ĠF rag ments ] ĊĠĠĠĠ Ġ* Ġ( http :// developer . android . com / training / basics / fragments / com munic ating . html ) ĊĠĠĠĠ Ġ* Ġfor Ġmore Ġinformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠOn Fragment Interaction Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠUpdate Ġargument Ġtype Ġand Ġname ĊĠĠĠĠĠĠĠ Ġfun Ġon Fragment Interaction ( uri : ĠUri ) ĊĠĠĠ Ġ} Ċ } Ċ