Posted at

Android JavaでKoinからAAC ViewModelをDIする

KotlinフレンドリーなDIライブラリのKoin

諸事情でJavaを書いている際にKoinでAAC ViewModelをDIするのに困ったので備忘録

:thinking: 「JavaでAAC ViewModelをKoinからDIするときどうすれば良いのだろう...」


環境

Koin: 1.0.2


ViewModelをInjectする


Kotlinではこう

import org.koin.androidx.viewmodel.ext.android.viewModel

private val myViewModel: MyViewModel by viewModel()


Javaではこう

import static org.koin.androidx.viewmodel.ext.android.LifecycleOwnerExtKt.viewModelByClass;

private Lazy<MyViewModel> myViewModel = viewModelByClass(
this,
JvmClassMappingKt.getKotlinClass(MyViewModel.class),
null,
null,
null,
ParameterList::new
);


総評

Convert Java File to Kotlin Fileしていこう :smile:


おまけ(パラメータ付きinjectがしたい場合)


Kotlinではこう

import org.koin.android.ext.android.inject

import org.koin.core.parameter.parametersOf

private val navigator: Navigator by inject { parametersOf(this) }


Javaではこう

import static org.koin.java.standalone.KoinJavaComponent.inject;

private Lazy<Navigator> navigator = inject(
Navigator.class,
"",
null,
() -> new ParameterList(this)
);


参照元

Getting started with Android Architecture & ViewModel

Getting started with Android & Java

viewModelByClass

Converting Kotlin's KClass to regular Class in Java