Merge pull request #70 from TouchInstinct/lazy_view_model
Added lazy init methods for view models, with touch of roboswag flavor
This commit is contained in:
commit
540fe0e1e4
|
|
@ -23,5 +23,8 @@ dependencies {
|
|||
|
||||
implementation "androidx.appcompat:appcompat:$versions.appcompat"
|
||||
|
||||
implementation "androidx.fragment:fragment:$versions.fragment"
|
||||
implementation "androidx.fragment:fragment-ktx:$versions.fragment"
|
||||
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:$versions.lifecycle"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.touchin.lifecycle.extensions
|
||||
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.viewModels
|
||||
import androidx.annotation.MainThread
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.ViewModelStoreOwner
|
||||
import ru.touchin.lifecycle.viewmodel.LifecycleViewModelProviders
|
||||
|
||||
@MainThread
|
||||
inline fun <reified VM : ViewModel> Fragment.viewModels(
|
||||
noinline ownerProducer: () -> ViewModelStoreOwner = { this },
|
||||
noinline factoryProducer: () -> ViewModelProvider.Factory = { LifecycleViewModelProviders.getViewModelFactory(this) }
|
||||
) = viewModels<VM>(ownerProducer, factoryProducer)
|
||||
|
||||
@MainThread
|
||||
inline fun <reified VM : ViewModel> Fragment.targetViewModels(
|
||||
noinline ownerProducer: () -> ViewModelStoreOwner = { targetFragment!! },
|
||||
noinline factoryProducer: () -> ViewModelProvider.Factory = { LifecycleViewModelProviders.getViewModelFactory(targetFragment!!) }
|
||||
) = viewModels<VM>(ownerProducer, factoryProducer)
|
||||
|
||||
@MainThread
|
||||
inline fun <reified VM : ViewModel> Fragment.activityViewModels(
|
||||
noinline factoryProducer: () -> ViewModelProvider.Factory = { LifecycleViewModelProviders.getViewModelFactory(requireActivity()) }
|
||||
) = activityViewModels<VM>(factoryProducer)
|
||||
|
||||
@MainThread
|
||||
inline fun <reified VM : ViewModel> ComponentActivity.viewModels(
|
||||
noinline factoryProducer: () -> ViewModelProvider.Factory = { LifecycleViewModelProviders.getViewModelFactory(this) }
|
||||
): Lazy<VM> = viewModels(factoryProducer)
|
||||
Loading…
Reference in New Issue