Skip to content

Commit

Permalink
Make DataBinding optional
Browse files Browse the repository at this point in the history
  • Loading branch information
arthur3486 committed Feb 16, 2020
1 parent 35c298b commit 0de808f
Show file tree
Hide file tree
Showing 26 changed files with 161 additions and 243 deletions.
7 changes: 4 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,10 @@ dependencies {
implementation project(":marvel-api")
implementation project(":imageloading")
implementation project(":imageloading-glide")
implementation project(":mvvm")
implementation project(":mvvm-navigation")
implementation project(":mvvm-navigation-dagger")

implementation "com.arthurivanets.mvvm:mvvm-core:1.4.1"
implementation "com.arthurivanets.mvvm:mvvm-navigation:1.4.1"
implementation "com.arthurivanets.mvvm:mvvm-navigation-dagger:1.4.1"

testImplementation unitTestingDependencies
androidTestImplementation instrumentationTestingDependencies
Expand Down
Binary file modified app/release/app-release.apk
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,23 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import com.arthurivanets.mvvm.markers.CanHandleBackPressEvents
import com.arthurivanets.sample.ui.base.BaseFragment
import com.arthurivanets.sample.ui.base.BaseMvvmFragment

/**
*
*/
abstract class BaseViewPagerAdapter(fragmentManager : FragmentManager) : FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT), CanHandleBackPressEvents {


private val fragmentList = ArrayList<BaseFragment<*, *>>()
private val fragmentList = ArrayList<BaseMvvmFragment<*, *>>()


fun addFragment(fragment : BaseFragment<*, *>) {
fun addFragment(fragment : BaseMvvmFragment<*, *>) {
fragmentList.add(fragment)
}


fun getFragment(position : Int) : BaseFragment<*, *>? {
fun getFragment(position : Int) : BaseMvvmFragment<*, *>? {
return (if((position >= 0) && (position < fragmentList.size)) fragmentList[position] else null)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package com.arthurivanets.sample.di.modules

import com.arthurivanets.sample.di.modules.activities.HostModule
import com.arthurivanets.sample.ui.host.HostActivity
import dagger.Module
import dagger.android.ContributesAndroidInjector
Expand All @@ -25,7 +24,7 @@ import dagger.android.ContributesAndroidInjector
abstract class ActivityBuilder {


@ContributesAndroidInjector(modules = [HostModule::class])
@ContributesAndroidInjector
abstract fun bindHostActivity() : HostActivity


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ package com.arthurivanets.sample.di.modules

import com.arthurivanets.sample.di.modules.fragments.CharactersModule
import com.arthurivanets.sample.di.modules.fragments.ComicsModule
import com.arthurivanets.sample.di.modules.fragments.DashboardModule
import com.arthurivanets.sample.di.modules.fragments.EventsModule
import com.arthurivanets.sample.ui.characters.info.CharacterInfoFragment
import com.arthurivanets.sample.ui.characters.list.CharactersFragment
Expand All @@ -34,7 +33,7 @@ import dagger.android.ContributesAndroidInjector
abstract class FragmentBuilder {


@ContributesAndroidInjector(modules = [DashboardModule::class])
@ContributesAndroidInjector
abstract fun buildDashboardFragment() : DashboardFragment


Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package com.arthurivanets.sample.di.modules.general

import com.arthurivanets.sample.imageloading.ImageLoader
import com.arthurivanets.sample.imageloading.glide.GlideImageLoader
import com.arthurivanets.sample.ui.base.StubViewModel
import dagger.Module
import dagger.Provides

Expand All @@ -29,6 +30,12 @@ class UtilitiesModule {
fun provideImageLoader() : ImageLoader {
return GlideImageLoader()
}


@Provides
fun provideStubViewModel() : StubViewModel {
return StubViewModel()
}


}
24 changes: 3 additions & 21 deletions app/src/main/java/com/arthurivanets/sample/ui/base/BaseActivity.kt
Original file line number Diff line number Diff line change
@@ -1,31 +1,13 @@
/*
* Copyright 2018 Arthur Ivanets, [email protected]
*
* Licensed 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.
*/

package com.arthurivanets.sample.ui.base

import androidx.annotation.LayoutRes
import androidx.databinding.ViewDataBinding
import com.arthurivanets.mvvm.BR
import com.arthurivanets.mvvm.BaseViewModel
import com.arthurivanets.mvvm.navigation.dagger.MvvmActivity

abstract class BaseActivity<VDB : ViewDataBinding, VM : BaseViewModel>(@LayoutRes layoutId : Int) : MvvmActivity<VDB, VM>(layoutId) {
abstract class BaseActivity(@LayoutRes layoutId : Int) : BaseMvvmActivity<ViewDataBinding, StubViewModel>(layoutId) {


override val bindingVariable = BR.viewModel
override val bindingVariable = 0
override val isDataBindingEnabled = false


}
24 changes: 3 additions & 21 deletions app/src/main/java/com/arthurivanets/sample/ui/base/BaseFragment.kt
Original file line number Diff line number Diff line change
@@ -1,31 +1,13 @@
/*
* Copyright 2018 Arthur Ivanets, [email protected]
*
* Licensed 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.
*/

package com.arthurivanets.sample.ui.base

import androidx.annotation.LayoutRes
import androidx.databinding.ViewDataBinding
import com.arthurivanets.mvvm.BaseViewModel
import com.arthurivanets.mvvm.navigation.dagger.MvvmFragment
import com.arthurivanets.sample.BR

abstract class BaseFragment<VDB : ViewDataBinding, VM : BaseViewModel>(@LayoutRes layoutId : Int) : MvvmFragment<VDB, VM>(layoutId) {
abstract class BaseFragment(@LayoutRes layoutId : Int) : BaseMvvmFragment<ViewDataBinding, StubViewModel>(layoutId) {


override val bindingVariable = BR.viewModel
override val bindingVariable = 0
override val isDataBindingEnabled = false


}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,18 @@
* limitations under the License.
*/

package com.arthurivanets.sample.ui.dashboard
package com.arthurivanets.sample.ui.base

import com.arthurivanets.mvvm.AbstractViewModel
import androidx.annotation.LayoutRes
import androidx.databinding.ViewDataBinding
import com.arthurivanets.mvvm.BR
import com.arthurivanets.mvvm.BaseViewModel
import com.arthurivanets.mvvm.navigation.dagger.MvvmActivity

class DashboardViewModel : AbstractViewModel()
abstract class BaseMvvmActivity<VDB : ViewDataBinding, VM : BaseViewModel>(@LayoutRes layoutId : Int) : MvvmActivity<VDB, VM>(layoutId) {


override val bindingVariable = BR.viewModel


}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,18 @@
* limitations under the License.
*/

package com.arthurivanets.sample.ui.host
package com.arthurivanets.sample.ui.base

import com.arthurivanets.mvvm.AbstractViewModel
import androidx.annotation.LayoutRes
import androidx.databinding.ViewDataBinding
import com.arthurivanets.mvvm.BaseViewModel
import com.arthurivanets.mvvm.navigation.dagger.MvvmFragment
import com.arthurivanets.sample.BR

class HostActivityViewModel : AbstractViewModel()
abstract class BaseMvvmFragment<VDB : ViewDataBinding, VM : BaseViewModel>(@LayoutRes layoutId : Int) : MvvmFragment<VDB, VM>(layoutId) {


override val bindingVariable = BR.viewModel


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.arthurivanets.sample.ui.base

import com.arthurivanets.mvvm.AbstractViewModel

class StubViewModel : AbstractViewModel() {
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import com.arthurivanets.sample.domain.entities.Character
import com.arthurivanets.sample.domain.entities.Comics
import com.arthurivanets.sample.domain.entities.Image
import com.arthurivanets.sample.imageloading.ImageLoader
import com.arthurivanets.sample.ui.base.BaseFragment
import com.arthurivanets.sample.ui.base.BaseMvvmFragment
import com.arthurivanets.sample.ui.base.GeneralViewStates
import com.arthurivanets.sample.ui.base.MarvelRoutes
import com.arthurivanets.sample.ui.util.extensions.onItemClick
Expand All @@ -54,7 +54,7 @@ import kotlinx.android.synthetic.main.view_item_empty_view.*
import kotlinx.android.synthetic.main.view_progress_bar_horizontal.*
import javax.inject.Inject

class CharacterInfoFragment : BaseFragment<FragmentCharacterInfoBinding, CharacterInfoViewModel>(R.layout.fragment_character_info) {
class CharacterInfoFragment : BaseMvvmFragment<FragmentCharacterInfoBinding, CharacterInfoViewModel>(R.layout.fragment_character_info) {


private val args by navArgs<CharacterInfoFragmentArgs>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import com.arthurivanets.sample.adapters.characters.CharacterItemViewHolder
import com.arthurivanets.sample.adapters.characters.CharacterItemsRecyclerViewAdapter
import com.arthurivanets.sample.databinding.FragmentCharactersBinding
import com.arthurivanets.sample.domain.entities.Character
import com.arthurivanets.sample.ui.base.BaseFragment
import com.arthurivanets.sample.ui.base.BaseMvvmFragment
import com.arthurivanets.sample.ui.base.GeneralViewStates
import com.arthurivanets.sample.ui.base.MarvelRoutes
import com.arthurivanets.sample.ui.characters.CHARACTERS_COLUMN_COUNT
Expand All @@ -43,7 +43,7 @@ import kotlinx.android.synthetic.main.fragment_characters.*
import kotlinx.android.synthetic.main.view_progress_bar_circular.*
import javax.inject.Inject

class CharactersFragment : BaseFragment<FragmentCharactersBinding, CharactersViewModel>(R.layout.fragment_characters), CanScrollToTop {
class CharactersFragment : BaseMvvmFragment<FragmentCharactersBinding, CharactersViewModel>(R.layout.fragment_characters), CanScrollToTop {


@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import com.arthurivanets.sample.domain.entities.Character
import com.arthurivanets.sample.domain.entities.Comics
import com.arthurivanets.sample.domain.entities.Image
import com.arthurivanets.sample.imageloading.ImageLoader
import com.arthurivanets.sample.ui.base.BaseFragment
import com.arthurivanets.sample.ui.base.BaseMvvmFragment
import com.arthurivanets.sample.ui.base.GeneralViewStates
import com.arthurivanets.sample.ui.base.MarvelRoutes
import com.arthurivanets.sample.ui.util.extensions.onItemClick
Expand All @@ -54,7 +54,7 @@ import kotlinx.android.synthetic.main.view_item_empty_view.*
import kotlinx.android.synthetic.main.view_progress_bar_horizontal.*
import javax.inject.Inject

class ComicsInfoFragment : BaseFragment<FragmentComicsInfoBinding, ComicsInfoViewModel>(R.layout.fragment_comics_info) {
class ComicsInfoFragment : BaseMvvmFragment<FragmentComicsInfoBinding, ComicsInfoViewModel>(R.layout.fragment_comics_info) {


private val args by navArgs<ComicsInfoFragmentArgs>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import com.arthurivanets.sample.adapters.comics.ComicsItemViewHolder
import com.arthurivanets.sample.adapters.comics.ComicsItemsRecyclerViewAdapter
import com.arthurivanets.sample.databinding.FragmentComicsBinding
import com.arthurivanets.sample.domain.entities.Comics
import com.arthurivanets.sample.ui.base.BaseFragment
import com.arthurivanets.sample.ui.base.BaseMvvmFragment
import com.arthurivanets.sample.ui.base.GeneralViewStates
import com.arthurivanets.sample.ui.base.MarvelRoutes
import com.arthurivanets.sample.ui.comics.COMICS_COLUMN_COUNT
Expand All @@ -43,7 +43,7 @@ import kotlinx.android.synthetic.main.fragment_comics.*
import kotlinx.android.synthetic.main.view_progress_bar_circular.*
import javax.inject.Inject

class ComicsFragment : BaseFragment<FragmentComicsBinding, ComicsViewModel>(R.layout.fragment_comics), CanScrollToTop {
class ComicsFragment : BaseMvvmFragment<FragmentComicsBinding, ComicsViewModel>(R.layout.fragment_comics), CanScrollToTop {


@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import com.arthurivanets.commons.ktx.statusBarSize
import com.arthurivanets.commons.ktx.updatePadding
import com.arthurivanets.sample.R
import com.arthurivanets.sample.adapters.dashboard.DashboardViewPagerAdapter
import com.arthurivanets.sample.databinding.FragmentDashboardBinding
import com.arthurivanets.sample.ui.base.BaseFragment
import com.arthurivanets.sample.ui.characters.list.CharactersFragment
import com.arthurivanets.sample.ui.comics.list.ComicsFragment
Expand All @@ -34,7 +33,7 @@ import com.arthurivanets.sample.ui.util.extensions.isEmpty
import kotlinx.android.synthetic.main.fragment_dashboard.*
import kotlinx.android.synthetic.main.view_toolbar.*

class DashboardFragment : BaseFragment<FragmentDashboardBinding, DashboardViewModel>(R.layout.fragment_dashboard) {
class DashboardFragment : BaseFragment(R.layout.fragment_dashboard) {


private lateinit var pagerAdapter : DashboardViewPagerAdapter
Expand Down
Loading

0 comments on commit 0de808f

Please sign in to comment.