1
1
package otus.homework.coroutines
2
2
3
3
import android.os.Bundle
4
+ import android.widget.Button
5
+ import android.widget.ImageView
6
+ import android.widget.TextView
4
7
import androidx.appcompat.app.AppCompatActivity
5
8
import androidx.lifecycle.ViewModelProvider
9
+ import androidx.lifecycle.lifecycleScope
10
+ import com.squareup.picasso.Picasso
11
+ import kotlinx.coroutines.launch
6
12
7
13
class MainActivity : AppCompatActivity () {
8
14
9
- lateinit var catsPresenter: CatsPresenter
10
-
11
15
private val diContainer = DiContainer ()
12
16
17
+ private lateinit var fact: TextView
18
+ private lateinit var image: ImageView
19
+ private lateinit var loadButton: Button
20
+
13
21
private val viewModel by lazy {
14
22
ViewModelProvider (
15
- this ,
16
- CatsViewModel .provideFactory(diContainer.catsService, diContainer.imageService)
23
+ this , CatsViewModel .provideFactory(diContainer.catsService, diContainer.imageService)
17
24
)[CatsViewModel ::class .java]
18
25
}
19
26
20
27
override fun onCreate (savedInstanceState : Bundle ? ) {
21
28
super .onCreate(savedInstanceState)
22
-
23
- val view = layoutInflater.inflate(R .layout.activity_main, null ) as CatsView
29
+ val view = layoutInflater.inflate(R .layout.activity_main, null )
24
30
setContentView(view)
31
+ fact = view.findViewById(R .id.fact_textView)
32
+ image = view.findViewById(R .id.catImage)
33
+ loadButton = view.findViewById(R .id.button)
25
34
26
- catsPresenter = CatsPresenter (
27
- diContainer.catsService,
28
- diContainer.imageService,
29
- diContainer.presenterScope
30
- )
31
- view.presenter = catsPresenter
32
- catsPresenter.attachView(view )
33
- catsPresenter.onInitComplete()
35
+ configureFact()
36
+ setListeners()
37
+ }
38
+
39
+ private fun setListeners () {
40
+ loadButton.setOnClickListener {
41
+ viewModel.load( )
42
+ }
34
43
}
35
44
36
- override fun onStop () {
37
- if (isFinishing) {
38
- catsPresenter.apply {
39
- detachView()
45
+ private fun configureFact () {
46
+ lifecycleScope.launch {
47
+ viewModel.uiState.collect { state ->
48
+ fact.text = state.fact.fact
49
+ Picasso .get().load(state.image.url).into(image)
40
50
}
41
51
}
42
- catsPresenter.cancelCoroutine()
43
- super .onStop()
44
52
}
45
53
}
0 commit comments