This is the way I did it, but anything that is functional is acceptable.
++ Main UI ++ Display view (Activity or Dialog) Button (to create an entry) TextView (for title) ListView (of entries) TextView (for description) ImageView (for photo) ++ ListView item UI TextView (for date and time) ImageView (for photo) TextView (for location) TextView (for title) Button (for save) TextView (for date and time) Button (for delete) ++ Database id - int title - String description - String photoUri - String time - String (trick to allow look up from list click) latitude - double longitude - double ++ Main activity ---------------------------------------------------------------- onCreate get permission ---------------------------------------------------------------- goOnCreating build DB fill list view start locating ---------------------------------------------------------------- fill list view get list of DB entities convert entities to ArrayList create SimpleAdapter set adapter view binder set list click listener set list adapter ---------------------------------------------------------------- setViewValue switch on view id cast data to right type and put in view return true ---------------------------------------------------------------- clickHandler case create: put current time and location into Intent launch EditDisplay activity ---------------------------------------------------------------- onItemCLick put item time into Intent launch edit-display activity ---------------------------------------------------------------- ARL EditDisplay onActiviytResult if status is OK fill list view ---------------------------------------------------------------- LocationCallback save location ---------------------------------------------------------------- onDestroy close DB remove location updates ---------------------------------------------------------------- getPermission ---------------------------------------------------------------- ++ EditDisplay ---------------------------------------------------------------- onCreate get time from Intent put time into UI if there's a DB entry with this time put data from entry into UI else get location from Intent, put in UI put blanks into rest of UI ---------------------------------------------------------------- onClick switch on view id case camera: create unique Uri for photo launch Camera case save: make a new DB entity put everything in from UI if there was an entry in onCreate put id in new entry update DB else add to DB finish() case delete: if there was an entry in onCreate delete it from the DB finish() ---------------------------------------------------------------- ARL Camera onActiviytResult if status is OK put photo in UI ----------------------------------------------------------------