Giter Club home page Giter Club logo

basicmvvm's Introduction

MovieApp

Kotlin Dagger2 Material design The Movie DB

Application which retrieves data from Webserver (via Retrofit), saves it into cache and get from it if user is offline. There are applying MVVM architecture pattern and Dagger 2 example.

Overview:

  • Model

    Model is implemented as Repository pattern. Firstly it begins from internet connection checking. Consequently if it's alive we're retrieving data from the server (by using Retrofit 2). Otherwise we're trying to fetch data from the cache itself.

  • View

    View is realised as 2 fragments. First one contains RecyclerView, second one depends on clicks on recycler-items and finally displays detailed data fetched from the Model. It implements state saving reflected on configuration changes.

  • ViewModel

    ViewModel is responsible for transferring data between view and model.

  • Dagger 2

    โ€“ Implementation of dependency injection for communication between app modules
    โ€“ AndroidInjector applying for injecting into View components
    โ€“ Unit-testing simplifying

Applied technologies and libraries:

  • Model

    • Network

      Retrofit 2
      โ€“ getting data from server into pojo-classes

      okHTTP
      โ€“ caching data from the server to display the movie offline

      Moshi
      โ€“ converting json to object

    • Coroutines
      โ€“ managing asynchronous network queries
      โ€“ using instead of callbacks
      โ€“ providing light asynchronous operations

  • ViewModel

    • LiveData
      โ€“ observer-pattern implementation for View interaction
  • View

    • Fragments
      โ€“ interactive displaying and click reflecting

    • Data Binding
      โ€“ replace basic operations with UI (e.g. findViewById() ) to the XML

All libraries:

  • Android X
  • Material Librarie
  • Android Jetpack
  • Dagger 2
  • Kotlin Coroutines
  • Retrofit 2
  • OkHTTP 3
  • Moshi
  • Glide

basicmvvm's People

Contributors

kostialeo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.