Skip to content

floppp/MonumentalTrees

Repository files navigation

Main description

Project made as a home work for the subject "Android Programming Fundamentlals", part of the Master de Desarrollo de Aplicaciones Móviles. It works as a list/map with that shows trees that has been classified as monumental. The app has being developed in Java. I like Kotlin, but i want to refresh Java and, honestly, i feel building time for Java is shorter than for Kotlin. It uses the MVVM pattern. My first time, a lot of chances it is wrongly implemented. The original source is this GVA webpage. From this pdf, a GoogleSheet has been created, and with Sheety, the same GoogleDrive acts like a REST server, feeded from the GoogleSheet.

TODO list [19/29]

  • Retrofit for network
  • Room for caching/storing info
  • LiveData to update UI
  • MVVM
  • CardView to show info
  • Toolbar
  • Valencia/Castellón/Alicante spinner
  • Progress indicator when loading data
  • Observers cancellations between requests
  • Click on CardView to show details
  • Screen adjusted in detail fragment (navigation bar and title)
  • UTM to lat/lng
  • Map with all trees
  • Our position in map. I’ve used setMyLocationEnabled instead of LocationManager
  • Custom marker
  • Landscape design
  • Styling details fragment
  • Browser from button in details
  • Some user options
  • Error control if network request fails
  • Filtering by species
  • Filtering by town
  • Distances request to Google API
  • Favorite and visited lists
  • Adding photos and more info (thing about it) to the selected tree, in the detail screen
  • Unique(s) view models in graphs, shared between elements
  • Sending data using graph
  • Center computation with reduce
  • Zoom level depending on edge rectangle

Android features used in the project

  • Recycler View
  • Network requests with Retrofit.
  • JSon request, GSON to parse it (not used at 100%)
  • Internationalization
  • Constraint Layout
  • Orientation
  • Activity + Fragments
  • VectorDrawable
  • Shared Prefences
  • Sensors (GPS)
  • Asynchronous code: Thread, Handler, ExecutorService
  • State restored from rotation, either via LiveData subscription or Bundle
  • Databases (SQLite through Room)
  • DiffCallback (ListAdapter instead of Adapter), but for this app, it has worst performance, so i left RecyclerView.Adapter
  • View Binding
  • ViewModel + LiveData to request to SQLite (with Room), update UI and create messages from user events.
  • Navigation graph to replace fragments in a very easy way
  • To navigate from item in recycler to detail fragment, i use a SingleLiveEvent. I should use the graph to send data (a tree in this case), which i think is a better solution, but i didn’t try and finally i left like this.

References

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages