You woke up today with the great plan of travelling around the whole world. After spending half an hour browsing through the available planning apps, you decide to write your own instead which will obviously be perfect. It will be a helpful solution to collect your destinations into a database, and display them on a map.
- organize code with MVP architecture,
- use the
Roomlibrary for storing data in database, - show locations on
Google Maps, - load images with Picasso,
- learn the concept of
Async Tasks.
-
The app has an Activity where all the data is displayed about each destination.
- The package name is
com.codecool.tripplanner, and the name of the application isTrip Planner - Destinations are saved into a Room database. The model contains at least a title, a gps coordinate and an url of a picture that shows the location
- Use a
RecyclerViewto display the information - The project is using the MVP Architecture pattern
- An image of each destination is displayed using the Picasso library to load it from the url
- While the app is loading data, a gray overlay and a progressbar is displayed on top of the list.
- When the list of destinations is empty, a text is displayed on the screen to inform the user, not just the empty
RecyclerView
- The package name is
-
There is an Activity where the user can add a new location and save it to the database
- This screen uses a
ConstraintLayoutto offer a form, where the destionation details can be typed in - The save
Buttonhas a different pressed state than the normal background
- This screen uses a
-
There is an Activity where the selected destination is displayed on a map
- This feature uses the Google Maps library
-
The app needs to have a custom icon and handle device rotation.
- The application has an icon other than the default
- The application handles device rotation
- All colors, dimens and string resources in the project are extracted into their respective xml files.
- If your app needs to connect to the internet, you'll have to add a permission to the
AndroidManifest.xml
Follow this link to create your project repository.
- π Constraint layout
- β Async task
- β MVP Architecture
- π MVP example project
- β Room persistence library
- π Room protips
- π LiveData
- β Google Maps
- π Good and short Room summary video but in Kotlin
- π Picasso