All Projects → anandwana001 → catchflicks

anandwana001 / catchflicks

Licence: MIT License
🎬 Kitchen sink project for learning android concepts 🎬

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to catchflicks

MockAppMVVM
A sample app structure using the MVVM architecture using Retrofit, Dagger2, LiveData, RxJava, ViewModel and Room.
Stars: ✭ 14 (+16.67%)
Mutual labels:  room, jetpack, glide, viewmodel, retrofit2, lifecycle, mvvm-architecture
Mvvmframe
🏰 MVVMFrame for Android 是一个基于Google官方推出的Architecture Components dependencies(现在叫JetPack){ Lifecycle,LiveData,ViewModel,Room } 构建的快速开发框架。有了MVVMFrame的加持,从此构建一个MVVM模式的项目变得快捷简单。
Stars: ✭ 218 (+1716.67%)
Mutual labels:  room, dagger2, viewmodel, retrofit2, lifecycle, mvvm-architecture, databinding
WanAndroidJetpack
🔥 WanAndroid 客户端,Kotlin + MVVM + Jetpack + Retrofit + Glide。基于 MVVM 架构,用 Jetpack 实现,网络采用 Kotlin 的协程和 Retrofit 配合使用!精美的 UI,便捷突出的功能实现,欢迎下载体验!
Stars: ✭ 124 (+933.33%)
Mutual labels:  room, jetpack, glide, viewmodel, mvvm-architecture, databinding
Mvvmarms
Android MVVM Architecture Components based on MVPArms and Android Architecture Components.
Stars: ✭ 425 (+3441.67%)
Mutual labels:  room, dagger2, viewmodel, retrofit2, lifecycle, databinding
Wanandroid
🏄 基于Architecture Components dependencies (Lifecycles,LiveData,ViewModel,Room)构建的WanAndroid开源项目。 你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Stars: ✭ 410 (+3316.67%)
Mutual labels:  room, dagger2, glide, viewmodel, retrofit2, databinding
Pursuit-Core-Android
Pursuit Core Android
Stars: ✭ 45 (+275%)
Mutual labels:  room, jetpack, dagger2, viewmodel, retrofit2
Mvvmhabit
goldze: 本人喜欢尝试新的技术,以后发现有好用的东西,我将会在企业项目中实战,没有问题了就会把它引入到MVVMHabit中,一直维护着这套框架,谢谢各位朋友的支持。如果觉得这套框架不错的话,麻烦点个 star,你的支持则是我前进的动力!
Stars: ✭ 6,789 (+56475%)
Mutual labels:  rxjava, glide, retrofit2, lifecycle, databinding
News Sample App
A sample news app which demonstrates clean architecture and best practices for developing android app
Stars: ✭ 334 (+2683.33%)
Mutual labels:  room, dagger2, viewmodel, retrofit2, mvvm-architecture
Android Jetpack Demo
🔥 快速入门Android Jetpack以及相关Kotlin、RxJava、MVVM等主流技术,独立构架App的基础技能
Stars: ✭ 335 (+2691.67%)
Mutual labels:  room, rxjava, viewmodel, lifecycle, databinding
Mvvmsmart
基于谷歌最新AAC架构,MVVM设计模式的一套快速开发库,整合ViewModel+Lifecycles+Navigation+DataBinding+LiveData+Okhttp+Retrofit+RxJava+Glide等主流模块,满足日常开发需求。使用该框架可以快速开发高质量、易维护的Android应用。 项目组会持续维护,请放心使用.欢迎Start并Fork交流.
Stars: ✭ 382 (+3083.33%)
Mutual labels:  room, glide, viewmodel, retrofit2, databinding
Simple-Notes-Kotlin-App
✍️ Simple Note Making App use mvvm architecture , dagger , coroutines and navigation component. Features includes 🗒️ create , edit and ❌ delete notes
Stars: ✭ 40 (+233.33%)
Mutual labels:  room, jetpack, dagger2, viewmodel, mvvm-architecture
Jetpack github
基于Kotlin + Jetpack全家桶 + Coroutines(协程) + Flutter等架构实现的一款精简版Github客户端项目,望与广大小伙伴一起成长,欢迎start or fork!
Stars: ✭ 314 (+2516.67%)
Mutual labels:  room, glide, viewmodel, retrofit2, databinding
modern-android
Modern Android Project Skeleton
Stars: ✭ 17 (+41.67%)
Mutual labels:  room, rxjava, jetpack, viewmodel, databinding
ChatApp
Chat app based on Firebase tools.
Stars: ✭ 88 (+633.33%)
Mutual labels:  room, jetpack, dagger2, mvvm-architecture, databinding
Marvelheroes
❤️ A sample Marvel heroes application based on MVVM (ViewModel, Coroutines, LiveData, Room, Repository, Koin) architecture.
Stars: ✭ 826 (+6783.33%)
Mutual labels:  room, dependency-injection, retrofit2, mvvm-architecture, databinding
Kotlin Modular Tdd Coroutines Mvvm
A sample Kotlin app which was built with modular structure, Kotlin DSL, Kotlin Coroutines, TDD and MVVM patterns.
Stars: ✭ 256 (+2033.33%)
Mutual labels:  dagger2, glide, retrofit2, mvvm-architecture, databinding
Android Clean Architecture Mvvm Dagger Rx
Implemented by Clean Architecture, Dagger2, MVVM, LiveData, RX, Retrofit2, Room, Anko
Stars: ✭ 138 (+1050%)
Mutual labels:  room, rxjava, dagger2, retrofit2, mvvm-architecture
Kotlin Mvvm Architecture
Android Architecture Design Patterns using Kotlin, MVVM, Dagger2, LiveData, Room, MediatorLiveData, NetworkBoundResources, Retrofit, AndroidX, ViewModels, Dependency Injection using Dagger2, Repository pattern.
Stars: ✭ 126 (+950%)
Mutual labels:  room, dependency-injection, dagger2, retrofit2, mvvm-architecture
Coolweather
Weather App that uses Android best practices. Android Jetpack, clean architecture. Written in Kotlin
Stars: ✭ 154 (+1183.33%)
Mutual labels:  room, glide, viewmodel, retrofit2, databinding
Android Mvvm Architecture
This repository contains a detailed sample app that implements MVVM architecture using Dagger2, Room, RxJava2, FastAndroidNetworking and PlaceholderView
Stars: ✭ 2,720 (+22566.67%)
Mutual labels:  room, rxjava, dagger2, mvvm-architecture

Catchflicks 🎬

CircleCI Codacy Badge

GitHub license GitHub stars GitHub forks GitHub watchers GitHub followers Twitter Follow

Catchflicks is a sample project after completing Android Development Online Course For Professionals by MindOrks.

This app shows the popular movies, upcoming movies and the ongoing movies in theatre from the movie db API. The goal of this sample project is to implement most of the learning from the Bootcamp. Also, this project works as a kitchen sink project where anyone can play with any new Android API's and concepts.

Screenshot 📱

Architecture

Project consist of multiple packages in order to achieve MVVM architecture.

  • data
  • di
  • ui
  • utils

Tech-stack 🛠

This project use multiple libraries to bring easy way of implementation

Development Setup ⚙️

This project uses the TMDb API to fetch movies data.
To begin with the setup, firstly you need to create an API key.

  1. Create an account at themoviedb.org
  2. Go to settings from the profile icon
  3. Click on API
  4. Click on create
# Insert at ~/.gradle/gradle.properties or catchflicks/gradle.properties
API_KEY=<insert>

This project uses the Dagger2 for dependency Injection. After opening this project in your Android Studio you might get some error which is due unavailability of few classes. You need to make project or try to build the project, this will generate all the required classes for dagger.

Custom ViewModelProviderFactory 🦾🦿

I had created a custom ViewModelProviderFactory class because I need to pass arguments in my View Model class constructor.

  • Default -> ViewModelProviders.of(this).get(MyViewModel.class);
  • ViewModelProviders.of, this depends upon a ViewModelStore and a ViewModelFactory
  • return new ViewModelProvider(activity.getViewModelStore(), factory);
  • getViewModelStore() under the hood uses onRetainNonConfigurationInstance() method and SavedStateRegistryController class which calls performRestore() and performSave() method of SavedStateRegistry class.
  • ViewModelStore store view model using HashMap<String, ViewModel>
  • So, if we have arguments in our view model class constructor then we create custom ViewModelProviderFactory.

class ViewModelProviderFactory<T : ViewModel>(
    private val kClass: KClass<T>,
    private val creator: () -> T
) : ViewModelProvider.NewInstanceFactory() {

    @Suppress("UNCHECKED_CAST")
    @Throws(IllegalArgumentException::class)
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(kClass.java)) return creator() as T
        throw IllegalArgumentException("Unknown class name")
    }
}
    ViewModelProviders.of(activity, ViewModelProviderFactory(MainViewModel::class){
            // MainViewModel(PARAM_1,PARAM_2)
        }).get(MainViewModel::class.java)
  • We are extending our custom class with ViewModelProvider.NewInstanceFactory().
  • This is used to create the instance of the given class.
  • This by default returns class object with empty argument list. return modelClass.newInstance();
  • KClass is the holder of a class of type ViewModel that needs to be injected.
  • Instances of KClass class are obtainable by the ::class syntax.
  • This is the Lambda function, this is provided by the ActivityModule/FragmentModule, when creator lambda is called then that module creates and return the instance of ViewModel.

Work in Progress 🚧🛠🚧

  • Search feature
  • Unit Testing
  • UI Testing, using espresso and mockito
  • Update Region option
  • Update Language option
  • Try Pagination API
  • Dark Mode
  • Try Navigation Component
  • Coroutine
  • Better UI
  • Bookmark Movie

Contact 🔗

Let's connect here -> akshayn.app

License 📝

MIT License

Copyright (c) 2020 Akshay Nandwana

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].