Skip to content

It's a sample app that displays information about The English Premier League.

Notifications You must be signed in to change notification settings

MohamedTaher/MVVM-Android-Sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Football Data App

It's a sample app that displays information about The English Premier League.

The main used architectures

  • MVVM
  • Data Repository


Why MVVM?

  • MVVM is one of the architectural patterns which enhances separation of concerns.
  • Google introduced architecture components which includes LiveData and ViewModel which facilitates developing Android app using MVVM pattern.
  • It's helpful to solve common problems like Tight Coupling and Testability.

Used Jetpack Architecture Components

  • Data Binding - Declaratively bind observable data to UI elements.
  • LiveData - Notify views when underlying database changes.
  • Room - Fluent SQLite database access.
  • ViewModel - Manage UI-related data in a lifecycle-conscious way.

Why Data Repository?

  • Decouples the application from the data sources.
  • Provides data from multiple sources (DB, API).
  • Testable business logic via Unit Tests.
  • Easily adding new data sources.

The app has following packages

  1. common: It has the Application class and the ViewModel provider factory.
  2. data: It contains models and data repository.
  3. ui: View classes along with their corresponding ViewModel.
  4. utilities: Utility classes.


3rd Party Libraries

  • KODIN - Dependency injection library.
  • Retrofit - A HTTP client for Android.
  • Logging Interceptor - An OkHttp interceptor which logs HTTP request and response data.
  • GSON - A serialization/deserialization library to convert Objects into JSON and back.
  • Mockito - Mocking framework for unit tests.

About

It's a sample app that displays information about The English Premier League.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages