Skip to content

Latest commit

 

History

History
41 lines (37 loc) · 2.58 KB

File metadata and controls

41 lines (37 loc) · 2.58 KB

Clean_Architecture_MVVM

Clean Code Map & List by Clean Architecture & MVVM with Test code

Demo of App:

1- Refreshing
2- Select a car on List
3- Select a car on Map

An application which has 3 major Duty:

1.Receive the data from Remote(End Point) which it is some useful vehicle- information provided by Json
2.Showing the list of our vehicles which is done in this project in “MainActivity.kt” using RecyclerView
3.Showing all vehicle on the map using marker


Additional capabilities which this project has:

1.Bottom sheet to ask user whether he/she wants to send request to that vehicle or not(fake functionality by showing Toast).
2.Swipe Refresh Layout in “MainActivity.kt” which with pulling down the page we can manual refresh the data from Remote(End Point).
3.Click Events on markers in “MapActivity.kt” which will set center of camera on marker and zoom in on that specific area and opens the bottom sheet which is described on the first item in this list.
4.Click Events on Request buttons in “MapActivity.kt” that will show a “Snackbar” which shows Request for that specific car has been sent.
5.Click on item in the list of vehicles that will bring the user to “MapActivity.kt” and find and zoom on specific which user has been clicked on and opens the bottom sheet which is described on the first item in this list.


Technologies:

1.Clean Architecture
2.MVVM
3.View Binding
4.Google Map
5.Retrofit
6.Coroutines
7.Dagger Hilt
8.Swipe Refresh Layout
9.Different Screen Size
10.Unit Test


Some noticeable points:

1.Using “DiffUtil” technology for keep our list updated : “DiffUtil” is the best technology to updating list that does not need to reload the data
2.Testing the “UseCase” with Simulating data transfer between “Repository” and “UseCase” which is provided by Creating Repository Interface that contains RepositoryImpl ‘s behavior and Creating fake repository in test which inherit from Repository Interface and creating fake data to send to “UseCaseTest” Class and we can use the fake repository which is simulating the behavior of real repository to Create ”UseCase” Object to test it.
3.Using lambda expression for “onClick” events of items in list of vehicles