/MVVM-Kotlin-Dagger2

MVVM + Kotlin + Dagger2 + Timber + Glide + Retrofit + Gson + RxJava + Reactive Streams + Carview + RecyclerView + Navigation Component

Primary LanguageKotlin

All Components working Together

This is one page News App using News Api (https://newsapi.org)

Very Simple Dagger Architecture used in App

Components Used in App

1) MVVM Arhitecture

MVVM is one of the architectural patterns which enhances separation of concerns, it allows separating the user interface logic from the business (or the back-end) logic. Its target (with other MVC patterns goal) is to achieve the following principle “Keeping UI code simple and free of app logic in order to make it easier to manage”.

2) Kotlin

Kotlin is a programming language that can run on JVM. Google has announced Kotlin as one of its officially supported programming languages in Android ...

3) Dagger 2

From the documentation: By using dependency injection framework, each class is easy to test. You don't need a bunch of boilerplate just to swap the RpcCreditCardService out for a FakeCreditCardService. Dependency injection isn't just for testing. It also makes it easy to create reusable, interchangeable modules. You can share the same AuthenticationModule across all of your apps. And you can run DevLoggingModule during development and ProdLoggingModule in production to get the right behavior in each situation.

4) Timber

Timber is used for better logging in Android. As an Android developer, we use a lot of Log statement in our project to generate outputs and we can use it to check if the required output is printed in Terminal or not.

5) Glide

Glide is a fast and efficient image loading library for Android focused on smooth scrolling. Glide offers an easy to use API, a performant and extensible resource decoding pipeline and automatic resource pooling.

6) Retrofit

Retrofit is a type-safe REST client for Android, Java and Kotlin developed by Square. The library provides a powerful framework for authenticating and interacting with APIs and sending network requests with OkHttp.

7) GSON Convertor

A Converter which uses Gson for serialization to and from JSON. A default Gson instance will be created or one can be configured and passed to the GsonConverterFactory to further control the serialization.

8) RxJava and Reactive Programming

So let’s begin by providing a definition of Reactive Programming: Reactive Programming is a programming paradigm oriented around data flows and the propagation of change i.e. it is all about responding to value changes. For example, let’s say we define x = y+z. When we change the value of y or z, the value of x automatically changes. This can be done by observing the values of y and z. Reactive Extensions is a library that follows Reactive Programming principles to compose asynchronous and event-based programs by using observable sequence. RxJava is a Java based implementation of Reactive Programming. RxAndroid is specific to Android platform which utilises some classes on top of the RxJava library.

9) RecyclerView

Overview The RecyclerView is a ViewGroup that renders any adapter-based view in a similar way. It is supposed to be the successor of ListView and GridView. One of the reasons is that RecyclerView has a more extensible framework, especially since it provides the ability to implement both horizontal and vertical layouts. Use the RecyclerView widget when you have data collections whose elements change at runtime based on user action or network events.

10) Navigation component

The Navigation component is a library that can manage complex navigation, transition animation, deep linking, and compile-time checked argument passing between the screens in your app.

Thanks for Reading

I will using more android components that can be used together. Thanks for Reading I am current looking for oppurtunity in Android. Email prakashshukla1820@gmail.com