Skip to content

Commit 60e9018

Browse files
committed
Otus-Android#3 viewModel factory
1 parent 67ac154 commit 60e9018

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package otus.homework.coroutines
2+
3+
import androidx.lifecycle.ViewModel
4+
import androidx.lifecycle.ViewModelProvider
5+
import androidx.lifecycle.viewmodel.initializer
6+
import androidx.lifecycle.viewmodel.viewModelFactory
7+
8+
class CatsViewModel(
9+
private val catsService: CatsService,
10+
private val imageService: ImageService
11+
) : ViewModel() {
12+
13+
companion object {
14+
fun provideFactory(
15+
catsService: CatsService,
16+
imageService: ImageService
17+
): ViewModelProvider.Factory = viewModelFactory {
18+
initializer {
19+
CatsViewModel(catsService, imageService)
20+
}
21+
}
22+
}
23+
}

app/src/main/java/otus/homework/coroutines/MainActivity.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@ package otus.homework.coroutines
22

33
import android.os.Bundle
44
import androidx.appcompat.app.AppCompatActivity
5+
import androidx.lifecycle.ViewModelProvider
56

67
class MainActivity : AppCompatActivity() {
78

89
lateinit var catsPresenter: CatsPresenter
910

1011
private val diContainer = DiContainer()
1112

13+
private val viewModel by lazy {
14+
ViewModelProvider(
15+
this,
16+
CatsViewModel.provideFactory(diContainer.catsService, diContainer.imageService)
17+
)[CatsViewModel::class.java]
18+
}
19+
1220
override fun onCreate(savedInstanceState: Bundle?) {
1321
super.onCreate(savedInstanceState)
1422

0 commit comments

Comments
 (0)