DanhDue / AndroidGenericAdapter

Android Generic Adapter - A project based on Android Jetpack, Kotlin, MVVM architecture & Dependency Injection using Koin.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Android Generic Adapter - A sample base code.

A project based on Android Jetpack, Kotlin, MVVM architecture & Dependency Injection using Koin.

Introduction

This project is a sample base code that implements the MVVM architecture and uses Android Jetpack.

Technical Information used in this project:

  1. Programming Language: Android Kotlin.
  2. Architecture: MVVM architecture based on Android Jetpack. For more resources on learning Android development, visit the Developer Guides at developer.android.com.
  3. Android Components: (Navigation, ViewModel, LiveData, Data Binding, Lifecycles, Android Material Design, etc...).
  4. Multiple Threads: Kotlin Coroutine.
  5. Third Party Libraries: Glide, Retrofit, Koin, Firebase, MockK, etc,...
  6. Unit Test: Android testing framework, MockK, and Robolectric; Unit Test coverage Analysis using JaCoCo.
  7. ScreenShots

Moreover, you can read more detail about some project components by clicking to links contained at References part.

Libraries Used

  • Foundation - Components for core system capabilities, Kotlin extensions and support for multidex and automated testing.
    • AppCompat - Degrade gracefully on older versions of Android.
    • Android KTX - Write more concise, idiomatic Kotlin code.
    • Test - An Android testing framework for unit and runtime UI tests.
  • Architecture - A collection of libraries that help you design robust, testable, and maintainable apps. Start with classes for managing your UI component lifecycle and handling data persistence.
    • Data Binding - Declaratively bind observable data to UI elements.
    • Lifecycles - Create a UI that automatically responds to lifecycle events.
    • LiveData - Build data objects that notify views when the underlying database changes.
    • Navigation - Handle everything needed for in-app navigation.
    • ViewModel - Store UI-related data that isn't destroyed on app rotations. Easily schedule asynchronous tasks for optimal execution.
  • UI - Details on why and how to use UI Components in your apps - together or separate
  • Third party
    • Glide for image loading
    • Kotlin Coroutines for managing background threads with simplified code and reducing needs for callbacks
    • MockK for unit test mocking. That provides DSL to mock behavior. Built from zero to fit Kotlin language. Supports named parameters, object mocks, coroutines and extension function mocking.
    • JaCoCo for Unit Test Coverage Analysis.
    • Koin for Dependency Injection.
    • Firebase for Crashlytics, Analytics, Push Notification,....
    • Retrofit for Networking.
    • And a few other libraries ....

Screenshots

  1. Coverage Overview.

Coverage Overview

  1. Unit Test Detail for a ViewModel.

Unit Test Detail for ViewModel

  1. Unit Test Detail for a Repository

Unit Test Detail for Repository

References

License

Copyright 2020 DanhDue ExOICTIF, danhdue@gmail.com

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

Android Generic Adapter - A project based on Android Jetpack, Kotlin, MVVM architecture & Dependency Injection using Koin.


Languages

Language:Kotlin 96.6%Language:Ruby 1.2%Language:HTML 0.9%Language:Dockerfile 0.8%Language:Shell 0.4%Language:Java 0.1%