Я создаю приложение в Kotlin, используя шаблон MVP.
Для этого мне нужно добавить репозиторий в моего докладчика. За исключением этого, для моего репозитория требуется интерфейс Retrofit в качестве параметра его конструктора.
Я новичок в использовании Dagger2, и ответы, найденные в Интернете, слишком сложны для такого базового случая, как мой.
Вот репозиторий, который я хочу добавить:
class RepositoryInventory(private val api: Service): IRepositoryInventory {
override fun getInventoryItemByNum(itemnum: String): Observable<Response<Item>> {
return api.getInventoryItemByNum(itemnum)
.toObservable()
}
override fun getAllInventoryItems(): Single<Response<Item>> {
return api.getAllInventoryItems()
}
}
Мой компонент
@Singleton
@Component(modules = arrayOf(ActivityModule::class))
interface ActivityComponent {
fun inject(loginActivity: LoginActivity)
fun inject(itemDetailActivity: ItemDetailActivity)
}
Мой модуль:
@Module
class ActivityModule(private var activity: Activity) {
@Provides
fun provideActivity(): Activity {
return activity
}
@Provides
fun provideLoginPresenter(): LoginPresenter {
return LoginPresenter()
}
@Provides
fun provideItemDetailPresenter(): ItemDetailPresenter {
return ItemDetailPresenter()
}
}
В моей деятельности мой модуль вводится с помощью этого метода:
private fun injectDependency() {
val activityComponent = DaggerActivityComponent.builder()
.activityModule(ActivityModule(this))
.build()
activityComponent.inject(this)
}
У меня есть 2 компонента и 2 модуля: один предназначен для вставки во фрагмент, а другой в действие.
За исключением моего случая, я хочу внедрить в Presenter, который не является фрагментом или действием, а классом